【技术实现步骤摘要】
适用于Linux容器应用的多进程同步方法
[0001]本专利技术涉及通信
,尤其涉及适用于Linux容器应用的多进程同步方法。
技术介绍
[0002]目前终端产品已经迭代到能源控制器,它采用模组化设计,通过不同种类的功能模组配合,实现对终端形态的重新定义。同时在软件形态上,统一使用linux系统,并加入了容器(Docker)技术,达到各应用程序之间互相隔离的目的。这使得linux多进程的同步,不单单要解决传统的单主机多进程资源共享、竞争问题,同时也要解决容器内进程和主机进程间的资源共享、竞争问题
[0003]传统的进程间通信方式(IPC)种类有很多,但在解决容器内、外多进程间临界区资源保护上,存在欠缺。比如system V信号量要适用在无亲缘关系的进程间,必须要满足生成键值一致。这就要求容器在安装时必须映射主机的某个特定目录。同时,为了达到IPC命名空间一致,容器安装时必须附带“IPC=host”参数来共享主机的IPC命名空间,而这一点破坏了容器作为虚拟化技术,和宿主主机系统间隔离的初衷。
[0004] ...
【技术保护点】
【技术特征摘要】
1.一种适用于Linux容器应用的多进程同步方法,其特征在于:所述方法包括,S1、初始化线程锁和进程锁;S2、获取线程锁,再获取进程锁,实现多线程多进程同步互斥以保护临界区资源;S3、完成任务后,释放进程锁,再释放线程锁,结束任务。2.根据权利要求1所述适用于Linux容器应用的多进程同步方法,其特征在于:所述S2的具体操作过程如下,S21、定义线程互斥锁、条件变量以及无符号32位整型信号值;S22、获取线程互斥锁,实现多线程对信号值进行保护;S23、判断信号值是否大于0,若是,执行S25,反之,执行S24;S24、等待条件变量,线程进入阻塞状态,并在收到条件变量的通知时,执行S25;S25、对信号值减1;S26、释放线程互斥锁;S27、执行进程锁加锁操作。3.根据权利要求1所述适用于Linux容器应用的多进程同步方法,其特征在于:所述S3释放进程锁和线程锁的具体操作过程如下,S31、执行进程所解锁过程;S32、获取线程互斥锁,实现多线程对信号值进行保护;S33、对信号值加1;S34、广播通知条件变量;S35、释放线程互斥锁。4.根据权利要求2所述适用于Linux容器应用的多进程同步方法,其特征在于:所述方法在执行S24过程中还存在如下操作,S241、接受用户定义的最大超时时间T1,并获取系统当前时间T2;S242、判断等待条件变量通知的已耗时间是否大于T2+T1,若是,结束加锁过程,反之,执行S243;S243、记录得到条件变量通知时的系统当前时间T3,获取线程同步已耗费的等待时间为T3
‑
T2;S244、计算剩余的超时时间ΔT=T1
‑
(T3
‑
T2),将其作为进程锁加锁的最大超时时间。5.根据权利要求1所述适用于Linux容器应用的多进...
【专利技术属性】
技术研发人员:邬科科,王燕,刘宁,冯丹荣,
申请(专利权)人:宁波三星医疗电气股份有限公司,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。