[发明专利]一种多线程启动同步方法有效
| 申请号: | 201710568634.0 | 申请日: | 2017-07-13 |
| 公开(公告)号: | CN109254834B | 公开(公告)日: | 2021-05-14 |
| 发明(设计)人: | 杨绍军 | 申请(专利权)人: | 普天信息技术有限公司 |
| 主分类号: | G06F9/48 | 分类号: | G06F9/48;G06F9/52;G06F9/54 |
| 代理公司: | 北京德琦知识产权代理有限公司 11018 | 代理人: | 谢安昆;宋志强 |
| 地址: | 100080 *** | 国省代码: | 北京;11 |
| 权利要求书: | 查看更多 | 说明书: | 查看更多 |
| 摘要: | |||
| 搜索关键词: | 一种 多线程 启动 同步 方法 | ||
本申请提供了一种多线程启动同步方法,通过采取三种状态和事件机制来控制多线程启动,使线程无序的启动过程变成有序的启动过程,从而避免系统的运转出现异常,也可以避免超时循环等待降低系统性能的情况,能够在不需要定义全局参数变量,也不需要考虑延迟,以及避免死锁的情况下实现多线程启动同步。
技术领域
本发明涉及通信技术领域,特别涉及一种多线程启动同步方法。
背景技术
线程启动时经常需要主线程向子线程传递参数,但是因线程之间的运行时间片随机,经常出现一个线程任务执行一半就切换到了另外一个线程,这样就导致主线程向子线程传递的参数在子线程还没有获取到相关参数信息时,主线程就将参数信息释放了,或者导致主线程还有准备好后续的资源,子线程已经执行到使用主线程的该资源了,从而使得主线程或者子线程出现异常崩溃。
在线程退出时也存在类似问题,当主线程退出时希望子线程也同步退出,但不能通过暴力方式关闭子线程,因为这样会导致资源没有释放从而出现资源泄漏,同时子线程退出时也存在线程启动时的类似问题,出现主线程或者子线程异常崩溃现象。
现有技术实现在线程启动进行参数传递时一般采取全局共享参数变量和启动后sleep延时方式,或者简单事件等待机制;退出时一般使用延时方式。
现有技术采取全局变量模式需要定义全局参数变量,该方式一方面浪费系统存储空间,也增加了维护复杂度,增大了软件耦合性;另外使得模块可重入性、可维护性、可重用性变得较差。
现有技术的延时机制的延时时长而无法精确量化,从而使得模块经常出现参数传递同步失败问题。
简单事件同步等待机制也容易造成死锁。
发明内容
有鉴于此,本申请提供一种多线程启动同步方法,能够在不需要定义全局参数变量,也不需要考虑延迟时长问题,同时可避免死锁的情况下实现多线程的启动同步。
为解决上述技术问题,本申请的技术方案是这样实现的:
一种多线程启动同步方法,其特征在于,该方法包括:
配置启动共享状态变量参数,以及启动触发事件;
通过主线程模块启动主线程,并将配置的初始状态值赋值给启动共享状态变量;
通过主线程模块启动子线程模块,并将参数信息传输给子线程模块;
通过子线程模块启动子任务线程,接收主线程模块传输的参数信息并存储;
使用主线程模块判断当前启动共享状态变量的值是否为初始状态值,如果是,将启动共享状态变量的值修改为配置的第一状态值;等待启动触发事件,在接收到启动触发事件时,运行主线程;否则,修改启动共享状态变量的值为初始状态值,并发送启动触发事件,继续运行主线程;
使用子线程模块判断当前启动共享状态变量的值是否为初始状态值,如果是,将启动共享状态变量的值修改为配置的第二状态值,等待启动触发事件,在接收到启动触发事件时,运行子线程;否则,修改启动共享变量参数的值为初始状态值,并发送启动触发事件,继续运行子线程。
由上面的技术方案可知,本申请中采取三种状态和事件机制来控制多线程启动,使线程无序的启动过程变成有序的启动过程,从而避免系统的运转出现异常,也可以避免超时循环等待降低系统性能的情况,本申请提供的技术方案不需要定义全局参数变量,也不需要考虑延迟时长问题,还可以避免死锁,双方一旦条件具备即可继续执行后续动作。
附图说明
图1为本申请实施例中多线程启动同步流程示意图;
图2为本申请实施例中子线程退出同步流程示意图。
具体实施方式
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于普天信息技术有限公司,未经普天信息技术有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201710568634.0/2.html,转载请声明来源钻瓜专利网。





