进程和线程的同步




线程和进程同步的4个对象: Critical Section, Mutex和Semaphore, 还有Event.
Critical Section是最简单的,只要将Critical Section的lock和unlock语句夹住你要保护的资源访问过程即可. Critical Section 会自动记录访问者的线程.帮助你完成互斥的效果.它最简单,也最高效,但是不能用在进程之间.
其他三种都可以用在进程之间,他们都有name,可以用name在进程间获得handle.他们都要与WaitForSingleObject or WaitForMultiObject配合使用.

Mutex用法,在要保护的资源访问之前调用WaitforSingleObject,访问结束的时候release. Wait函数会判断该Mutex对象是否被占用(或者说无信号状态),有信号的话,立即返回,无信号则会阻塞.知道mutex编程有信号状态.

Semaphore和Mutex机会一样,唯一的不同是,Semaphore可以控制访问一个资源的最大数量,Mutex相当于最大数量是1的semaphore.

Event其实道理也是一样,但是Event多用在一个线程通知另一个线程某个信号.它允许setevent和resetevent来自由控制有信号和无信号状态.告知另外一个线程.另一个线程一般通过waitforsingleboject函数来等待信号. 另外自动的event在调用wait函数之后自动变成无信号状态.这是它的特色.




转载于:https://www.cnblogs.com/dqshll/archive/2008/03/22/1117498.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值