多线程的同步
来源:互联网 发布:office mac 激活 编辑:程序博客网 时间:2024/05/11 23:13
#include <windows.h>
#include <iostream.h>
DWORD WINAPI Fun1Proc(
LPVOID lpParameter //thread data
);
DWORD WINAPI Fun2Proc(
LPVOID lpParameter //thread data
);
int tickets = 100,num = 0;
HANDLE g_hEvent;
void main()
{
HANDLE hThread1,hThread2;//创建线程的句柄
hThread1 = CreateThread(NULL,0,Fun1Proc,NULL,0,NULL);//创建一个线程
hThread2 = CreateThread(NULL,0,Fun2Proc,NULL,0,NULL);//创建一个线程
CloseHandle(hThread1);//关闭句柄,并没有终止新创建的线程
CloseHandle(hThread2);//关闭句柄,并没有终止新创建的线程
//为了线程间同步不要采用人工事件对象
g_hEvent = CreateEvent(NULL,FALSE,FALSE,NULL);//创建自动事件对象,初始状态设置为了非信号状态
Sleep(8000);
CloseHandle(g_hEvent);
}
DWORD WINAPI Fun1Proc(
LPVOID lpParameter //thread data
)
{
while(TRUE)
{
WaitForSingleObject(g_hEvent,INFINITE);//申请事件对象,是否有信号
//ResetEvent(g_hEvent);
if (tickets > 0){
Sleep(100);
num++;
cout << "thread1 sell ticket : " << tickets-- << endl;
}
else{
cout << num << endl;
break;
}
SetEvent(g_hEvent);
}
return 0;
}
DWORD WINAPI Fun2Proc(
LPVOID lpParameter //thread data
)
{
while(TRUE)
{
WaitForSingleObject(g_hEvent,INFINITE);
//ResetEvent(g_hEvent);
if (tickets > 0){
num++;
Sleep(1);
cout << "thread2 sell ticket : " << tickets-- << endl;
}
else{
cout << num << endl;
break;
}
SetEvent(g_hEvent);
}
return 0;
}
- 同步多线程的同步机制
- 多线程同步的学习
- 多线程同步的方法
- 多线程的同步问题
- java的多线程同步
- 5.2多线程的同步
- 多线程的同步机制
- 十二、多线程的同步
- 多线程的同步
- VC多线程的同步
- 多线程的同步
- 多线程同步的理解
- 多线程的同步
- 多线程的同步
- Java 多线程的同步
- 多线程间的同步
- 多线程同步的前提
- Java 多线程的同步
- 桶排序
- android锁屏创建流程
- Go语言开发,step by step (Part 1:从hello world到网站开发)
- HDU1069(Monkey and Banana)DP
- BGP MPLS/VPN 网络技术
- 多线程的同步
- gentoo快速安装参考(2012修正版)
- 一个苦逼站长的十年创业路及感悟
- VS QT设置应用程序图标
- Python IDE比较与推荐
- 项目中使用Tree/LazyTreeGrid
- Python验证码识别模块
- es
- Square: 移动支付的新贵