锐英源软件
第一信赖

精通

英语

开源

擅长

开发

培训

胸怀四海 

第一信赖

当前位置:锐英源 / 开源技术 / C++开源心得 / 关键节互斥理解和注意事项
服务方向
人工智能数据处理
人工智能培训
kaldi数据准备
小语种语音识别
语音识别标注
语音识别系统
语音识别转文字
kaldi开发技术服务
软件开发
运动控制卡上位机
机械加工软件
软件开发培训
Java 安卓移动开发
VC++
C#软件
汇编和破解
驱动开发
联系方式
固话:0371-63888850
手机:138-0381-0136
Q Q:396806883
微信:ryysoft

锐英源精品原创,禁止转载和任何形式的非法内容使用,违者必究


关键节互斥理解和注意事项

 

学多线程要掌握互斥,这是CPU切片为线程模式下必须考虑的事情,CPU可以变身多个,但内存没办法变身。

互斥对象和事件对象都属于内核对象,利用内核对象进行线程同步时,速度较慢,但利用互斥对象和事件对象这样的内核对象,可以在多个进程中的各个线程间进行同步。

关键节工作在用户方式下,同步速度较快,但在使用关键节时,很容易进入死锁状态,因为在等待进入关键节时无法设定超时值。
通常,在编写多线程程序并需要实现线程同步时,首选关键节,由于它的使用比较简单,如果是在MFC程序中使用的话,可以在类的构造函数中调用InitializeCriticalSection函数,在该类的析构函数中调用DeleteCriticalSection函数,在所需保护的代码前面调用EnterCriticalSection 函数,在访问完所需保护的资源之后,调用LeaveCriticalSection函数。

可见,关键节在使用上是非常方便的,但有几点需要注意的是在程序中调用了EnterCriticalSection 函数之后,一定要相应地调用LeaveCriticalSection 函数,否则其他等待该临界区对象所有权的线程将无法执行。二是如果访问关键节时,使用了多个临界区对象,就要注意防止线程死锁的发生。另外,如果需要在多个进程间的各个线程间实现同步的话,可以使用互斥对象和事件对象。

友情链接
版权所有 Copyright(c)2004-2021 锐英源软件
公司注册号:410105000449586 豫ICP备08007559号 最佳分辨率 1024*768
地址:郑州大学北校区院(文化路97号院)内