[发明专利]在Linux上模拟实现Windows多对象同步等待机制的方法有效
申请号: | 201310003744.4 | 申请日: | 2013-01-06 |
公开(公告)号: | CN103077031A | 公开(公告)日: | 2013-05-01 |
发明(设计)人: | 李睿;杨南君;吕江花;马世龙 | 申请(专利权)人: | 北京航空航天大学 |
主分类号: | G06F9/44 | 分类号: | G06F9/44 |
代理公司: | 北京永创新实专利事务所 11121 | 代理人: | 周长琪 |
地址: | 100191*** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | 本发明是一种在Linux上模拟实现Windows多对象同步等待机制的方法,建立三个集合来管理不同状态下的线程,有线程进入或解除等待状态时,管理waiting集合,当对象的状态发生改变时,管理signaled集合,当线程等待需求被满足时,管理result集合;同时,本方法为每个线程建立一个APC队列文件,某对象在发送APC前,先获得全局信号量,再向目标线程的APC队列文件中写入相关异步调用函数。线程执行APC时,需获得全局信号量,然后从APC队列文件中读取并执行异步调用函数。本发明方法简单有效,很好地解决了Linux上由于异步调用可能发生在线程执行过程中的任意部分而导致的安全问题。 | ||
搜索关键词: | linux 模拟 实现 windows 对象 同步 等待 机制 方法 | ||
【主权项】:
一种在Linux上模拟实现Windows多对象同步等待机制的方法,其特征在于,首先建立了三个集合waiting、signaled和result,waiting集合中管理着当前处于等待状态的线程,signaled集合中管理着当前状态处于置位的对象,result集合中管理着已经满足等待条件但还未释放的线程;然后进行如下步骤:步骤1:当waiting集合中有新线程加入时,新线程进行全局信号量的释放操作;步骤2:查看waiting集合中每一个线程的等待方式,对于每个线程,如果该线程是同时等待,转入步骤3,如果该线程是非同时等待,转入步骤4;步骤3:判断线程所等待的所有对象是否在signaled集合中,若在,转入步骤5,否则线程继续等待,直到所等待的所有对象都在signaled集合中;步骤4:判断线程所等待的对象中是否有一个在signaled集合中,如果有,转入步骤5,否则,线程继续等待,直到所等待的对象有一个在signaled集合中;步骤5:修改signaled集合中线程所等待的对象的属性;步骤6:在result集合中建立线程的返回结果文件,并写入返回结果;步骤7:将线程从waiting集合中删除,释放线程的等待信号量。
下载完整专利技术内容需要扣除积分,VIP会员可以免费下载。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于北京航空航天大学,未经北京航空航天大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/patent/201310003744.4/,转载请声明来源钻瓜专利网。