CreateEvent

#include "iostream"
#include "windows.h"
using namespace std;
DWORD WINAPI ThreadProc1(LPVOID lpParam);
DWORD WINAPI ThreadProc2(LPVOID lpParam);
HANDLE hEvent = NULL;
HANDLE hThread1 = NULL;
HANDLE hThread2 = NULL;
int main(int argc,char *args[])
{
hEvent = CreateEvent(NULL,TRUE,FALSE,NULL); //使用手动重置为无信号状态,初始化时无信号状态
hThread1 = CreateThread(NULL,0,(LPTHREAD_START_ROUTINE)ThreadProc1,NULL,0,NULL);
Sleep(1000); 
hThread2 = CreateThread(NULL,0,(LPTHREAD_START_ROUTINE)ThreadProc2,NULL,0,NULL);
Sleep(1000);
if (NULL == hThread1 || NULL == hThread2)
{
cout <<"create thread fail!";
}
//DWORD dCount = ResumeThread(hThread);
system("pause");
return 0;
}
DWORD WINAPI ThreadProc1(LPVOID lpParam)
{
cout <<"in thread1@!"<<endl;
DWORD dReturn = WaitForSingleObject(hEvent,1000);//INFINITE);
if (WAIT_OBJECT_0 == dReturn)
{
cout <<"thread1 signaled ! "<<endl;
cout <<"in thread1 --signal"<<endl;
}
if(WAIT_TIMEOUT == dReturn)
{
    cout <<"WaitForSingleObject is time out"<<endl;            
                }

//ResetEvent(hEvent);
SetEvent(hEvent);
return 0;
}
DWORD WINAPI ThreadProc2(LPVOID lpParam)
{
cout <<"in thread2@!"<<endl;
DWORD dReturn = WaitForSingleObject(hEvent,INFINITE);
if (WAIT_OBJECT_0 == dReturn)
{
cout <<"thread2 signaled ! "<<endl;
}
cout <<"in thread2--signal"<<endl;
return 0;
}


这个是网上找来例子,稍做修改,其执行结果如下:

in thread1@!
in thread2@!
WaitForSingleObject is time out
thread2 signaled !
in thread2--signal
Press any key to continue . . .

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值