码迷,mamicode.com
首页 > 编程语言 > 详细

操作系统中的进程同步与Window中的线程同步的关系

时间:2020-10-05 22:18:38      阅读:28      评论:0      收藏:0      [点我收藏+]

标签:事件   ons   释放   window   线程同步   计数   系统   命名   就是   

操作系统中为了解决进程间同步问题提出了用信号量机制,信号量可分为四种类型分别是互斥型信号量,记录型信号量,AND型信号量,信号量集。

互斥型信号量

互斥型信号量是资源数量为1的特殊的记录型信号量。表示对于一类资源且这类资源的数量为1,也就是说任何时候只能有一个进程得到这个资源,其余进程想要获得此资源的进程都将进入等待状态。这与Windows线程同步中的使用的大部分对象很相似,例如事件对象,互斥量内核对象,临界区对象,这些对象也是只能有一个线程能拥有,不同的是线程拥有对象可以计数,只有当此线程拥有的对象计数为0时才表示此对象被线程释放了。
其中注意互斥量内核对象和事件对象都可以命名,这样就可以在不同的进程中请求实现进程间的同步。

记录型信号量

记录型信号量表示一类资源但是资源的数量可以为多个,也就是说此信号量可以同时被多个进程所拥有。当资源数量全被被其他进程所拥有后如果还有进程请求该资源则会进入等待状态。这与Windows线程同步中的信号灯对象很相似,信号灯对象可以设置其计数值,一般像事件对象和互斥量对象等等其计数值为1,而信号灯对象的计数值可以大于1,也就是说1个计数值大于1的信号灯对象可以被多个线程所拥有的。同时其与记录型信号量所不同的是,其在被多个线程所拥有的同时可以被一个线程递归拥有多层,只有当此线程一层也不拥有时才释放此信号灯对象。

AND型信号量

表示多类资源的数目为一个,也就是说只有当所有的资源都处于空闲时才会得到这些资源,当然在处理完后也同时释放所有的资源所有权。当有一个资源不空闲时都会使进程处于等待状态。这和Windows中的函数WaitForMultipleObjects(DWORD dwCount,CONST HANDLE* phObjects, BOOL bWaitAll, DWORD dwMilliseconds)其可以用来同时请求多个资源,当参数bWaitAll为TRUE时表示只有当所有的资源都属于空闲状态时才会返回,否则处于等待状态。

信号量集

其表示的就是多类资源同时每一类资源还含有多个。

操作系统中的进程同步与Window中的线程同步的关系

标签:事件   ons   释放   window   线程同步   计数   系统   命名   就是   

原文地址:https://www.cnblogs.com/revercc/p/13770016.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!