一种多线程控制方法及终端设备技术

技术编号:33126792 阅读:23 留言:0更新日期:2022-04-17 00:37
本发明专利技术公开了一种多线程控制方法及终端设备,若需要在第一线程中对设备进行目标操作时,可以控制第一线程处于阻塞状态,使得第一线程不会继续执行后续操作;此时,可以在第二线程中执行用于实现目标操作的程序,并根据执行结果,在第二线程中设置共享锁的状态标记;进而,可以根据共享锁的状态标记确定出第一操作是否执行成功,若执行成功再唤醒第一线程,解除第一线程的阻塞状态,可以在第一线程中继续执行后续操作;此时,在第一线程中执行后续操作时,因前面的目标操作执行成功,所以后续操作可以正常进行,并不会出现异常现象,避免了对后续操作造成不良影响,从而实现了异步环境下,不同线程的操作在同一线程下的顺序执行。行。行。

【技术实现步骤摘要】
一种多线程控制方法及终端设备


[0001]本专利技术涉及微处理器
,尤指一种多线程控制方法及终端设备。

技术介绍

[0002]在android系统中,提出了一套基于相机框架Camera1的相机api(即终端设备调用终端中相机的应用程序接口),此api中相机的打开和预览是在同一线程中顺序进行的,相机预览一定是在相机打开完成之后进行。
[0003]之后,又出现了新的相机框架,即Camera2,其中,相机打开和相机预览等都具有一个回调,通知用户此操作最终的执行结果,如果执行结果为成功,用户可以继续执行后续操作;并且,Camera2中,相机打开在第一线程,而相机打开的执行程序和回调均在第二线程,这样相机的操作不会影响其他业务处理,这一改进通常情况下对性能提升具有很大的帮助。
[0004]在android系统中,处理图像以及实现各种图像效果需要使用OpenGL(Open Graphics Library,开放图像库),OpenGL处理图像需要在GLSurfaceView中显示;GLSurfaceView.Renderer(即GLSurfaceView渲染器)提供的接口可以将OpenGL绘制的图形渲染到SurfaceView中,Renderer(即渲染器)是在一个分离的线程中被调用,渲染操作是和界面线程解耦的,防止处理图像时堵塞主线程给用户卡顿的感觉;其中,这就要求相机打开和相机预览都必须在同一线程中进行。
[0005]并且,若在某个线程中需要进行相机打开和相机预览,在另一个线程中执行用于实现相机打开和相机预览的具体程序,如果未进行两个线程的同步操作,那么就会导致程序因为异步而出现程序错乱。
[0006]此外,基于Camera2,如果在某个线程(假设为A线程)中需要相机打开,但是相机打开是否执行成功的回调在另一个线程(假设为B线程)中,这样就会导致出现以下问题:
[0007]1、如果在A线程中需要相机预览,那么可能发生执行预览的时候,相机还没有打开,导致相机出现异常;
[0008]2、如果在B线程中需要相机预览,这又不符合前面提到的打开相机和相机预览都必须在同一线程中进行的要求。
[0009]因此,如何在异步环境中,避免出现程序错乱,是本领域技术人员亟待解决的技术问题。

技术实现思路

[0010]本专利技术实施例提供了一种多线程控制方法及终端设备,用以在异步环境中,避免出现程序错乱。
[0011]第一方面,本专利技术实施例提供了一种多线程控制方法,包括:
[0012]若需要在第一线程中对设备进行目标操作时,控制所述第一线程处于阻塞状态,且在所述第一线程中,设置共享锁的状态标记为初始值;
[0013]在第二线程中执行用于实现所述目标操作的程序,若执行后得到的结果为执行成功时,在所述第二线程中,设置所述共享锁的状态标记为目标值;
[0014]在所述第一线程中确定所述共享锁的状态标记为所述目标值时,唤醒所述第一线程。
[0015]第二方面,本专利技术实施例提供了一种多线程控制装置,包括:
[0016]存储器,用于存储程序指令;
[0017]处理器,用于调用所述存储器中存储的所述程序指令,按照获得的程序执行如本专利技术实施例提供的上述多线程控制方法。
[0018]第三方面,本专利技术实施例提供了一种可读性存储介质,所述可读性存储介质存储有多线程控制装置可执行指令,所述多线程控制装置可执行指令用于使多线程控制装置执行如本专利技术实施例提供的上述多线程控制方法。
[0019]第四方面,本专利技术实施例提供了一种终端设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现如本专利技术实施例提供的上述多线程控制方法的步骤。
[0020]本专利技术有益效果如下:
[0021]本专利技术实施例提供的一种多线程控制方法及终端设备,若需要在第一线程中对设备进行目标操作时,可以控制第一线程处于阻塞状态,使得第一线程不会继续执行后续操作;此时,可以在第二线程中执行用于实现目标操作的程序,并根据执行结果,在第二线程中设置共享锁的状态标记;进而,可以根据共享锁的状态标记确定出第一操作是否执行成功,若执行成功再唤醒第一线程,解除第一线程的阻塞状态,可以在第一线程中继续执行后续操作;此时,在第一线程中执行后续操作时,因前面的目标操作执行成功,所以后续操作可以正常进行,并不会出现异常现象,避免了对后续操作造成不良影响,从而实现了异步环境下,不同线程的操作在同一线程下的顺序执行,避免异步环境中的不同步操作带来的异常。
附图说明
[0022]图1示例性示出了本专利技术实施例提供的一种终端设备的结构示意图;
[0023]图2示例性示出了本专利技术实施例提供的一种终端设备的软件架构示意图;
[0024]图3示例性示出了本专利技术实施例提供的一种多线程控制方法的流程图;
[0025]图4示例性示出了本专利技术实施例提供的一种实施例的流程图;
[0026]图5示例性示出了本专利技术实施例提供的另一种实施例的流程图;
[0027]图6示例性示出了本专利技术实施例提供的一种多线程控制装置的结构示意图。
具体实施方式
[0028]下面将结合附图对本专利技术实施例中的技术方案进行清除、详尽地描述。其中,在本专利技术实施例的描述中,除非另有说明,“/”表示或的意思,例如,A/B可以表示A或B;文本中的“和/或”仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况,另外,在本专利技术实施例的描述中,“多个”是指两个或多于两个。
[0029]以下,术语“第一”、“第二”仅用于描述目的,而不能理解为暗示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括一个或者更多个该特征,在本专利技术实施例的描述中,除非另有说明,“多个”的含义是两个或两个以上。
[0030]此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖但不排他的包含,例如,包含了一系列组件的产品或设备不必限于清楚地列出的那些组件,而是可包括没有清楚地列出的或对于这些产品或设备固有的其它组件。
[0031]本专利技术中使用的术语“模块”,是指任何已知或后来开发的硬件、软件、固件、人工智能、模糊逻辑或硬件或/和软件代码的组合,能够执行与该元件相关的功能。
[0032]图1示出了终端设备100的结构示意图。
[0033]下面以终端设备100为例对实施例进行具体说明。应该理解的是,图1所示终端设备100仅是一个范例,并且终端设备100可以具有比图1中所示的更多的或者更少的部件,可以组合两个或多个的部件,或者可以具有不同的部件配置。图中所示出的各种部件可以在包括一个或多个信号处理和/或专用集成电路在内的硬件、软件、或硬件和软件的组合中实现。
[0034]图1中示例性示出了根据示例性实施例中终端本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种多线程控制方法,其特征在于,包括:若需要在第一线程中对设备进行目标操作时,控制所述第一线程处于阻塞状态,且在所述第一线程中,设置共享锁的状态标记为初始值;在第二线程中执行用于实现所述目标操作的程序,若执行后得到的结果为执行成功时,在所述第二线程中,设置所述共享锁的状态标记为目标值;在所述第一线程中确定所述共享锁的状态标记为所述目标值时,唤醒所述第一线程。2.如权利要求1所述的方法,其特征在于,还包括:若执行后得到的结果为执行失败时,保持所述共享锁的状态标记不变。3.如权利要求1所述的方法,其特征在于,在所述第一线程中,设置所述共享锁的状态标记为初始值,具体包括:在所述第一线程中,获取所述共享锁,并判断是否获取成功;若是,则在所述第一线程中,设置所述共享锁的状态标记为所述初始值,并在设置完成时释放所述共享锁;若否,则控制所述第一线程加入预设队列,且占用所述预设队列中未被占用位置中排序序号最小的位置,待所述第一线程位于所述预设队列的队头,在所述第一线程中,再次获取所述共享锁,直至获取成功;其中,在位于所述队头的线程,再次获取所述共享锁时,控制该线程从所述预设队列中脱离,且控制所述预设队列中的其余线程的排序序号依次减一;所述预设队列中各位置的排序序号与加入顺序正相关。4.如权利要求1所述的方法,其特征在于,在所述第二线程中,设置所述共享锁的状态标记为目标值,具体包括:在所述第二线程中,获取所述共享锁,并判断是否获取成功;若是,则在所述第二线程中,设置所述共享锁的状态标记为所述目标值,并在设置完成时释放所述共享锁;若否,则控制所述第二线程加入预设队列,且占用所述预设队列中未被占用位置中排序序号...

【专利技术属性】
技术研发人员:王鹏
申请(专利权)人:青岛海信移动通信技术股份有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1