线程同步之事件对象(类比互斥对象进行分析)
来源:互联网 发布:windows 10 网络崩溃 编辑:程序博客网 时间:2024/05/20 20:18
还是以售票系统为例:
#include <windows.h>#include <iostream.h>DWORD WINAPI Fun1Proc(LPVOID lpParameter);DWORD WINAPI Fun2Proc(LPVOID lpParameter);int tickets = 100;HANDLE g_hEvent; //事件对象int main(){HANDLE hThread1;HANDLE hThread2;// 要实现线程同步,第二个参数必须是FALSEg_hEvent = CreateEvent(NULL, FALSE, FALSE, NULL);hThread1 = CreateThread(NULL, 0, Fun1Proc, NULL, 0, NULL);hThread2 = CreateThread(NULL, 0, Fun2Proc, NULL, 0, NULL);CloseHandle(hThread1);CloseHandle(hThread2);SetEvent(g_hEvent); // 将事件对象设置为有信号状态(互斥对象一产生便有信号)Sleep(4000);CloseHandle(g_hEvent);return 0;}DWORD WINAPI Fun1Proc(LPVOID lpParameter){while(1){WaitForSingleObject(g_hEvent, INFINITE);if(tickets > 0){Sleep(1);cout << "thread1 sell ticket : " << tickets-- << endl;SetEvent(g_hEvent); // 将事件对象设置为有信号状态(类似于互斥对象的释放)}else{break;}}return 0;}DWORD WINAPI Fun2Proc(LPVOID lpParameter){while(1){WaitForSingleObject(g_hEvent, INFINITE);if(tickets > 0){Sleep(1);cout << "thread2 sell ticket : "<< tickets-- << endl;SetEvent(g_hEvent); // 将事件对象设置为有信号状态(类似于互斥对象的释放)}else{break;}}return 0;}
- 线程同步之事件对象(类比互斥对象进行分析)
- 线程同步之临界区(类比互斥对象进行分析)
- 线程的同步互斥之事件对象(Event)
- 互斥对象与事件对象实现线程同步
- 线程同步-临界区、互斥对象、事件对象区别
- Windows多线程程序设计之线程同步分析(结合互斥对象)(上)
- Windows多线程程序设计之线程同步分析(结合互斥对象)(中)
- Windows多线程程序设计之线程同步分析(结合互斥对象)(下)
- 线程同步之互斥对象(通俗易懂)
- 线程同步互斥之信号量对象(Semaphore)
- 线程同步的三种方法(互斥,事件,临界区) 之三 使用事件对象
- 线程同步-互斥对象
- 线程同步的三种方法(互斥,事件,临界区) 之二 使用互斥对象
- 线程同步与临界区对象、互斥对象、事件对象
- 线程同步之事件对象
- 线程同步之事件对象
- C++ 事件对象 多线程同步互斥
- C++ 事件对象 多线程同步互斥
- 虚拟存储器系统
- rpm详解
- OCP-1Z0-052-V8.02-28题
- 支持多种类型的栈——C语言实现
- 那些年轻的时光
- 线程同步之事件对象(类比互斥对象进行分析)
- 安卓ListView显示多个数据 单击的响应 长按弹出菜单
- 求两个或N个数的最大公约数(gcd)和最小公倍数(lcm)的较优算法
- OpenCV中调用cvCreateFileCapture函数返回NULL
- Leetcode: Subsets II
- 算法(第四版) Dijkstra 算数表达式求值算法-双栈
- 随笔二
- VIJOS-P1132(求先序遍历,已知中后)
- POJ 1269 Intersecting Lines