Windows下条件变量的实现
来源:互联网 发布:淘宝20万关键词 编辑:程序博客网 时间:2024/06/06 18:56
条件变量是什么?
是一种同步对象。
条件变量有什么用?
用于复杂的、多线程的、多核的程序中,实现多个线程间同步任务。
条件变量与其它同步对象的区别?
与事件、互斥锁、segment等同步对象相比,条件变量最大的不同在于”条件“二字,其它同步对象的同步”条件“是固定的,如事件的被激发,互斥锁被释放,而条件变量的"条件"是完全自定义的,比如你可以实现当”张三赚了5块钱、李四在看电视、奥巴马访问马尔它“时,条件变量完成同步。所以说条件变量可用于复杂的同步任务。
Windows下有没有条件变量?
简单的答案是:没有,Windows API没有提供条件变量对象,这就是本文会存在的原因和要解决的问题。
复杂点的答案是:
- 使用Windows Vista之后的版本(Vista之后的版本提供了native的条件变量对象;
- 从开源库中抽取;
- 你可以自已实现;
方案1不现实,因为现阶段你的客户大多数还是使用windows xp/2003以下的版本,而且Vista卖的也并不好;
方案2可以参考ace库,不过太多条件宏和不相关代码,难以抽取使用(你不可能为了一个同步变量,而扯进整个庞大的ace库吧);
方案3难度更大,必须要熟悉多线程编程,还要考虑很多变态的细节,我就是采用方案3 - 自已实现的,因为网上没有现成的,不得已而为之!而你就不必重新造轮子,直接copy下面的代码到你的项目里就可以直接使用了(只要你的项目是C++的)。
实现代码如下:
以上代码采用模板实现,变件变量类my_condition的模板参数是与条件变量配合使用的互斥量类型,为了方便直接使用,互斥量类型我也一并提供了: my_mutex。
代码我已在项目中测试使用过,如果发现问题,欢迎各路高手批评指正。
- Windows下条件变量的实现
- Windows下条件变量实现读写同步
- linux下实现同步的---条件变量
- windows 平台下 event 与 mutex的配合使用 模拟posix的条件变量
- Windows Via C/C++:用户模式下的线程同步——Condition Variables 条件变量
- Windows核心编程之 用户模式下的线程同步 读写锁和条件变量
- 对ACE锁、条件变量、信号量在windows和linux平台下的测试
- windows 条件变量
- windows 条件变量
- windows条件变量
- windows 使用关键段和条件变量实现的生产者和消费者线程同步
- Linux多线程编程下的条件变量
- linux下条件变量的使用
- 浅析linux下的条件变量
- linux下条件变量的实验研究
- 浅析linux下的条件变量
- Linux 下条件变量
- Linux下利用条件变量实现读写锁
- 程序员失业后应做的五件事
- 中美物价差距一览!
- 关于VC向导生成的COM的注册与反注册
- 九十后女生眼中的事业与爱情
- 测试1秒钟休眠所耗费的时间
- Windows下条件变量的实现
- TUE MAR 31,2009
- 看解放军训练就是一场噩梦
- GCC使用GDI+ (转贴参考)
- qeephp生成静态html的方法
- 一名北理工学子的心路历程
- SQL操作大全
- 好的网站
- 一个团队的良好气氛应该怎么营造