C++之线程信号量机制
来源:互联网 发布:标题优化免费软件 编辑:程序博客网 时间:2024/05/16 06:17
#include<iostream>#include<Windows.h>using namespace std;int tickets=100; //火车票总数HANDLE hSemaphore;DWORD WINAPI Thread1Proc(LPVOID lpParameter);//进程函数DWORD WINAPI Thread2Proc(LPVOID lpParameter);//进程函数void main(){HANDLE hThread1;HANDLE hThread2;hThread1=CreateThread(NULL,0,Thread1Proc,NULL,0,NULL); //创建线程hThread2=CreateThread(NULL,0,Thread2Proc,NULL,0,NULL);hSemaphore=CreateSemaphore(NULL,1,1,NULL); //创建信号量,初始为1,最多为1CloseHandle(hThread1); //释放句柄CloseHandle(hThread2);CloseHandle(hSemaphore);while(TRUE){WaitForSingleObject(hSemaphore,INFINITE);if(tickets>0){cout<<"主线程卖出第"<<tickets--<<"张票"<<endl;Sleep(50);ReleaseSemaphore(hSemaphore,1,NULL);}else{ReleaseSemaphore(hSemaphore,1,NULL); //释放信号量资源break;}}ExitThread(0);}DWORD WINAPI Thread1Proc(LPVOID lpParameter){while(TRUE){WaitForSingleObject(hSemaphore,INFINITE);//申请信号量 if(tickets>0) { cout<<"线程一卖掉第"<<tickets--<<"张票"<<endl; Sleep(50); ReleaseSemaphore(hSemaphore,1,NULL); } else{ReleaseSemaphore(hSemaphore,1,NULL);break;}}return 0;}DWORD WINAPI Thread2Proc(LPVOID lpParameter){while(TRUE){WaitForSingleObject(hSemaphore,INFINITE);if(tickets>0){cout<<"线程二卖出第"<<tickets--<<"张票"<<endl;Sleep(50);ReleaseSemaphore(hSemaphore,1,NULL);}else{ReleaseSemaphore(hSemaphore,1,NULL);break;}}return 0;}
0 0
- C++之线程信号量机制
- 线程同步机制之信号量
- linux C 线程间通信-信号量机制
- Linux线程编程 - 线程同步机制之信号量
- 使用信号量机制同步线程
- 操作系统之-----信号量机制
- 线程同步之信号量
- 线程同步之信号量
- 线程编程之信号量
- 线程同步之信号量
- C之信号量操作
- ios GCD之信号量机制
- GCD之信号量机制二
- GCD之信号量机制一
- 线程同步机制(1)---无名信号量
- 基于信号量的统一线程池机制
- Linux线程同步机制四--信号量sem
- 线程间同步 之 信号量
- 有关字节
- SSM框架中集成批量导入Mysql数据库功能
- Tomcat的性能与最大并发(1000)
- 几种形貌贵金属纳米材料的制备方法
- 链表创建,添加,反转等
- C++之线程信号量机制
- 为任务关键型Java应用优化垃圾回收(转载【写的很好】)
- 占位
- Android中的Handler解析
- 小狼豪设置定制accept中的键名
- 使用腾讯前端Jx框架写自己的方法
- 最为简易的listView (访问数组资源arrays.xml)
- Android里WebView详解(一)
- Java学习提要——Runtime类基础