同步屏障消息处理方法和电子设备与流程

文档序号:37365687发布日期:2024-03-22 10:18阅读:9来源:国知局
同步屏障消息处理方法和电子设备与流程

本申请涉及软件领域,尤其涉及一种同步屏障消息处理方法和电子设备。


背景技术:

1、安卓(android)操作系统的消息队列(message queue)中的消息包括同步消息(synchronous message)、异步消息(asynchronous message)和同步屏障(synchronousbarrier)消息;其中,位于消息队列前面的同步屏障消息会拦截后面的同步消息的处理,直至同步屏障消息被处理,后面的同步消息才可以被处理。但是由于编程人员疏忽,经常出现向消息队列中提交了同步屏障消息而未配对进行处理,导致后面的同步消息无法及时被处理,消息队列产生阻塞。例如,视图相关的操作一般通过同步消息来触发,如果同步消息无法及时被处理,会出现卡死冻屏的现象,影响用户体验。


技术实现思路

1、本申请实施例提供一种同步屏障消息处理方法和电子设备,用于避免消息队列产生阻塞。

2、为达到上述目的,本申请的实施例采用如下技术方案:

3、第一方面,提供了一种同步屏障消息处理方法,包括:确定消息队列的首个消息是否为同步屏障消息;如果首个消息为同步屏障消息,并且同步屏障消息在消息队列中停留的时长大于第一预设时长,则从消息队列中移除同步屏障消息。

4、本申请实施例提供的同步屏障消息处理方法,如果消息队列中的首个消息为同步屏障消息,并且,自从同步屏障消息加入消息队列的第一预设时长内,该同步屏障消息未被处理,则从消息队列中移除该同步屏障消息,使得同步消息可以继续被处理,避免消息队列产生阻塞。

5、在一种可能的实施方式中,同步屏障消息中包括同步屏障消息的调用栈信息,调用栈信息用于指示同步屏障消息产生路径上的各个函数的压栈信息;该方法还包括:向服务器发送同步屏障消息的调用栈信息,以输出同步屏障消息的调用栈信息。

6、服务器可以将同步屏障消息的调用栈信息输出到日志(log)文件中,方便开发人员根据该同步屏障消息的产生路径,确定哪个应用中的哪个函数引发的同步屏障消息未被及时处理的问题,以便解决该问题。对于在消息队列中停留的时长不超过第一预设时长的同步屏障消息,由于没有产生上述问题,则不必向服务器发送该同步屏障消息的调用栈信息,以节省日志资源。

7、在一种可能的实施方式中,确定消息队列的首个消息是否为同步屏障消息,包括:目标线程的句柄子线程定时向目标线程的消息队列提交预设的同步消息,如果预设的同步消息在消息队列中停留的时长大于第二预设时长,则确定消息队列的首个消息是否为同步屏障消息,目标线程为主线程或用户界面(user interface,ui)线程。

8、这种实施方式功能相对简单并且资源消耗相对较小,当句柄子线程由ui线程创建时,可以只对来自ui线程的同步屏障消息进行检测,当句柄子线程由主线程创建时,可以对来自所有线程的同步屏障消息进行检测。

9、在一种可能的实施方式中,该方法在遍历消息队列中各个消息时执行,或者,在消息入队时执行。

10、也就是说,该方法可以在消息队列(messagequeue)类的用于遍历消息队列中各个消息的next函数中实现,也可以在messagequeue类的用于将消息入队的enqueuemessage函数中实现。

11、在一种可能的实施方式中,还包括:持有同步锁;如果遍历准备变量为假,并且,准备对需要刷新的视图树进行遍历,则向消息队列提交同步屏障消息,并将遍历准备变量置为真,遍历准备变量用于指示是否已经准备对需要刷新的视图树进行遍历;如果遍历准备变量为真,并且,取消对需要刷新的视图树进行遍历或执行对需要刷新的视图树进行遍历,则从消息队列中移除同步屏障消息,并将遍历准备变量置为假。

12、该实施方式可以从根本上避免子线程刷新视图导致的同步屏障消息未被及时移除的问题,不必等待第一预设时长之后再移除同步屏障消息。从而避免卡死冻屏的现象的产生。

13、第二方面,提供了一种电子设备,包括处理器和存储器,存储器中存储指令,当处理器执行指令时,如第一方面及其任一实施方式所述的方法被执行。

14、第三方面,提供了一种计算机可读存储介质,包括指令,当指令在电子设备上运行时,使得电子设备执行如第一方面及其任一实施方式所述的方法。

15、第四方面,提供了一种包含指令的计算机程序产品,当指令在上述电子设备上运行时,使得该电子设备执行如第一方面及其任一实施方式所述的方法。

16、第五方面,提供了一种芯片系统,该芯片系统包括处理器,用于支持电子设备实现上述第一方面中所涉及的功能。在一种可能的设计中,该装置还包括接口电路,接口电路可用于从其它装置(例如存储器)接收信号,或者,向其它装置(例如通信接口)发送信号。该芯片系统可以包括芯片,还可以包括其他分立器件。

17、第二方面至第五方面的技术效果参照第一方面及其任一实施方式的技术效果,在此不再重复。



技术特征:

1.一种同步屏障消息处理方法,其特征在于,包括:

2.根据权利要求1所述的方法,其特征在于,所述同步屏障消息中包括所述同步屏障消息的调用栈信息,所述调用栈信息用于指示所述同步屏障消息产生路径上的各个函数的压栈信息;所述方法还包括:

3.根据权利要求1或2所述的方法,其特征在于,所述确定消息队列的首个消息是否为同步屏障消息,包括:

4.根据权利要求1或2所述的方法,其特征在于,所述方法在遍历消息队列中各个消息时执行,或者,在消息入队时执行。

5.根据权利要求1或2所述的方法,其特征在于,还包括:

6.一种电子设备,其特征在于,包括处理器和存储器,所述存储器中存储指令,当所述处理器执行所述指令时,如权利要求1-5任一项所述的方法被执行。

7.一种计算机可读存储介质,其特征在于,包括指令,当所述指令在电子设备上执行时,使得所述电子设备执行如权利要求1-5任一项所述的方法。


技术总结
本申请公开了一种同步屏障消息处理方法和电子设备,涉及软件领域,用于避免消息队列产生阻塞。同步屏障消息处理方法,包括:确定消息队列的首个消息是否为同步屏障消息;如果首个消息为同步屏障消息,并且,并且同步屏障消息在消息队列中停留的时长大于第一预设时长,则从消息队列中移除同步屏障消息。

技术研发人员:郭晓杰,赵俊民,余亮,王震雨
受保护的技术使用者:荣耀终端有限公司
技术研发日:
技术公布日:2024/3/21
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1