// Events.cpp : 定义控制台应用程序的入口点。 // #include "stdafx.h" #include <iostream> #include <WinSock2.h> #include <Windows.h> using namespace std; HANDLE g_Events[2] = {0}; UINT32 _stdcall CallBack(LPVOID lParam); int _tmain(int argc, _TCHAR* argv[]) { //HANDLE ThreadHandle = CreateThread(); //内核对象,返回值为句柄,并且配有安全属性 //一般对象,返回值为句柄 //自动 未授信 匿名 g_Events[0] = CreateEvent(NULL,TRUE,FALSE,NULL); g_Events[1] = CreateEvent(NULL,TRUE,FALSE,NULL); HANDLE ThreadHandle = CreateThread(NULL,0,(LPTHREAD_START_ROUTINE)CallBack,NULL,0,NULL); int i = 0; for(i=0;i<20;i++) { printf("Main() "); if(i==3) { SetEvent(g_Events[0]); //NO-->YES //Sleep(1); WaitForSingleObject(g_Events[1],INFINITE); //ResetEvent(g_Events[0]); //YES-->NO } } Sleep(INFINITE); return 0; } UINT32 _stdcall CallBack(LPVOID lParam) { int i = 0; //等待事件A授信 WaitForSingleObject(g_Events[0],INFINITE); printf("SubMain() "); //ResetEvent(g_Events[0]); WaitForSingleObject(g_Events[0],INFINITE); SetEvent(g_Events[1]); printf("SubMain() "); return 0; }