使用事件机制同步线程的例子
2016-08-22 15:09
183 查看
事件,使用事件就需要获得事件的句柄。
事件的创建是用CreateObject(事件属性指针,
手动清除事件信号还是自动清除事件信号,True是手动,
事件的初始状态,false是事件为激发(就是没激发没发生),
事件的名称)。
返回事件的句柄。
激发一个事件用函数:setEvent(HANDLE hObject);
获取一个现存的事件:OpenEvent(EVENT_ALL_ACCESS, true, "MyEvevt");
设置三个线程,一个主线程,一个读线程和一个写线程,读线程必须在写线程写之后才能读,主线程必须在读线程读之后才能结束
实现:定义两个事件, evRead, evFinish;读线程等待evRead, 主线程等待evFinish.
运行结果如图:
事件的创建是用CreateObject(事件属性指针,
手动清除事件信号还是自动清除事件信号,True是手动,
事件的初始状态,false是事件为激发(就是没激发没发生),
事件的名称)。
返回事件的句柄。
激发一个事件用函数:setEvent(HANDLE hObject);
获取一个现存的事件:OpenEvent(EVENT_ALL_ACCESS, true, "MyEvevt");
设置三个线程,一个主线程,一个读线程和一个写线程,读线程必须在写线程写之后才能读,主线程必须在读线程读之后才能结束
实现:定义两个事件, evRead, evFinish;读线程等待evRead, 主线程等待evFinish.
//使用事件机制同步线程的例子 //设置三个线程,一个主线程,一个读线程和一个写线程, //读线程必须在写线程写之后才能读,主线程必须在读线程读之后才能结束 /* 实现:定义两个事件, evRead, evFinish;读线程等待evRead, 主线程等待evFinish. */ #include <iostream> #include <Windows.h> #include <process.h> using namespace std; HANDLE evRead, evFinish; void ReadThread(void* param){ //等待读事件 WaitForSingleObject(evRead, INFINITE); //读操作 cout << "reading" << endl; //激发事件evFinish SetEvent(evFinish); } void WriteThread(void* param){ //写操作 cout << "writing" << endl; //唤醒读事件 SetEvent(evRead); } int main() { //创建两个事件,并初始化为未激发状态 evRead = CreateEvent(NULL, false, false, NULL); evFinish = CreateEvent(NULL, false, false, NULL); //创建读线程和写线程 _beginthread(ReadThread, 0, NULL); _beginthread(WriteThread, 0, NULL); //等待事件evFinish WaitForSingleObject(evFinish, INFINITE); cout << "the program is end." << endl; return 0; }
运行结果如图:
相关文章推荐
- 下面的例子演示了100个线程同时向一个银行账户中存入1元钱,在没有使用同步机制和使用同步机制情况下的执行情况。
- 使用事件同步线程
- Java实例说明 100个线程同时向一个银行账户中存入1元钱,在没有使用同步机制和使用同步机制情况下的执行情况
- 共享内存与同步线程的使用例子
- ucosii 多事件同步机制-读写者例子
- QT之使用 QWaitCondition 同步线程小例子
- 一个用双信号灯同步机制,协调两个后台线程的例子。
- 使用临界区机制同步线程
- Windows线程(六)使用事件机制解决线程同步问题
- QT之使用QSemaphore信号量同步线程小例子
- QT之使用QMutex/ QMutexLocker互斥量同步线程小例子
- 使用事件对象实现线程间的同步
- 使用Event同步线程的小例子
- 一个简单的C#多线程间同步(事件方法)的例子
- QT之使用QReadWriteLocker互斥量同步线程小例子
- 脚本模拟事件机制,基于MVP重写声文同步(without dojo lib)
- 用Java线程获取优异性能(II)——使用同步连载线程访问关键代码部份
- 线程管理:ACE的同步和线程管理机制
- C#的多线程机制探索(三)—线程的同步和通讯(生产者和消费者)
- Windows线程及同步机制