线程同步方法及注意事项vc++

一,利用互斥mutex进行线程间同步。

 

二,利用事件线程间同步
1人工重置的事件对象
当它变为有信号状态的时候,所有的线程都可以运行
在一个线程得到该事件状态后不会将改时间设置为非信号状态,除非人工设置ResetEvent()
函数


2自动重置的事件对象
当它变为有信号状态的时候,所有等待该事件的线程只能有一个变为可调度的线程去运行。
调用WaitForSingleObject()后同时操作系统会将其在设置为非信号状态
所以要在对所保护代码执行完毕以后在调用SetEvent()函数将事件设置为信号状态,以便
其他进程进行访问。


三,临界区(关键代码段)

 

 

 

互斥对象,事件对象与关键代码段的比较
互斥对象和事件对象属于内核对象,利用内核对象进行线程同步,速度比较慢,
但利用互斥兑现和事件对象这样的内核对象,可以在多个进程的各个线程间进行通信

 


关键代码段是工作在用户方式下的,同步速度较快,但是在使用关键代码段的时候,
很容易进入死锁,因为在等待进入关键代码段时死锁无法设置超时值。

 

 

 

 

 

 

 

 

 


 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值