可以描述一个资源有或没有。
// CreatEventDemo.cpp : Defines the entry point for the console application.
//
#include "stdafx.h"
#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, // 指定将事件对象创建成手动复原(true)还是自动复原(false)
/* 该变量设置为true, 使用SetEvent, 信号一致有 */
/* 该变量设置为false, 使用SetEvent, 信号只有一次 */
FALSE, // 默认有无信号
NULL); // 事件名称
hThread1 = CreateThread(NULL,0,(LPTHREAD_START_ROUTINE)ThreadProc1,NULL,0,NULL);
Sleep(200);
hThread2 = CreateThread(NULL,0,(LPTHREAD_START_ROUTINE)ThreadProc2,NULL,0,NULL);
Sleep(200);
if (NULL == hThread1 || NULL == hThread2)
{
cout <<"create thread fail!";
}
// 设置有信号,如果设置为手动复原,可以用ResetEvent设置为无信号
SetEvent(hEvent);
Sleep(3600*1000);
return 0;
}
DWORD WINAPI ThreadProc1(LPVOID lpParam)
{
cout <<"in thread1@!"<<endl;
while(1)
{
DWORD dReturn = WaitForSingleObject(hEvent, INFINITE);
if (WAIT_OBJECT_0 == dReturn)
{
cout <<" thread1 signaled ! "<<endl;
ResetEvent(hEvent);
}
cout <<"in thread1 --signal"<<endl;
}
return 0;
}
DWORD WINAPI ThreadProc2(LPVOID lpParam)
{
cout <<"in thread2@!"<<endl;
while(1)
{
//
#include "stdafx.h"
#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, // 指定将事件对象创建成手动复原(true)还是自动复原(false)
/* 该变量设置为true, 使用SetEvent, 信号一致有 */
/* 该变量设置为false, 使用SetEvent, 信号只有一次 */
FALSE, // 默认有无信号
NULL); // 事件名称
hThread1 = CreateThread(NULL,0,(LPTHREAD_START_ROUTINE)ThreadProc1,NULL,0,NULL);
Sleep(200);
hThread2 = CreateThread(NULL,0,(LPTHREAD_START_ROUTINE)ThreadProc2,NULL,0,NULL);
Sleep(200);
if (NULL == hThread1 || NULL == hThread2)
{
cout <<"create thread fail!";
}
// 设置有信号,如果设置为手动复原,可以用ResetEvent设置为无信号
SetEvent(hEvent);
Sleep(3600*1000);
return 0;
}
DWORD WINAPI ThreadProc1(LPVOID lpParam)
{
cout <<"in thread1@!"<<endl;
while(1)
{
DWORD dReturn = WaitForSingleObject(hEvent, INFINITE);
if (WAIT_OBJECT_0 == dReturn)
{
cout <<" thread1 signaled ! "<<endl;
ResetEvent(hEvent);
}
cout <<"in thread1 --signal"<<endl;
}
return 0;
}
DWORD WINAPI ThreadProc2(LPVOID lpParam)
{
cout <<"in thread2@!"<<endl;
while(1)
{
DWORD dReturn = WaitForSingleObject(hEvent, INFINITE);
if (WAIT_OBJECT_0 == dReturn)
{
cout <<"thread2 signaled ! "<<endl;
ResetEvent(hEvent);
}
cout <<"in thread2--signal"<<endl;
}
return 0;
}
{
cout <<"thread2 signaled ! "<<endl;
ResetEvent(hEvent);
}
cout <<"in thread2--signal"<<endl;
}
return 0;
}