#include <iostream> #include "windows.h" #include "process.h" using namespace std; HANDLE g_hEvent1; HANDLE g_hEvent2; HANDLE g_hEvent0; unsigned int __stdcall Fun0(PVOID pvParam) { WaitForSingleObject(g_hEvent0, INFINITE); cout << "in fun0 ...." << endl; return 0; } unsigned int __stdcall Fun1(PVOID pvParam) { WaitForSingleObject(g_hEvent1, INFINITE); cout << "in fun1 ...." << endl; return 0; } unsigned int __stdcall Fun2(PVOID pvParam) { WaitForSingleObject(g_hEvent2, INFINITE); cout << "in fun2 ...." << endl; return 0; } void main() { /* HANDLE CreateEvent( LPSECURITY_ATTRIBUTES lpEventAttributes, BOOL bManualReset, //是否手动设置 BOOL bInitialState, //初始状态,WaitForSingleObject() 当它为true是返回 LPCTSTR lpName ); */ g_hEvent0 = CreateEvent(NULL, TRUE, FALSE, NULL); g_hEvent1 = CreateEvent(NULL, TRUE, FALSE, NULL); g_hEvent2 = CreateEvent(NULL, TRUE, FALSE, NULL); //HANDLE hThread[3]; unsigned int dwThreadID; _beginthreadex(NULL, 0, Fun0, NULL, 0, &dwThreadID); _beginthreadex(NULL, 0, Fun1, NULL, 0, &dwThreadID); _beginthreadex(NULL, 0, Fun2, NULL, 0, &dwThreadID); Sleep(2000); SetEvent(g_hEvent0); Sleep(1000); SetEvent(g_hEvent1); Sleep(2000); SetEvent(g_hEvent2); Sleep(3000); return; } 依次的,三个线程被调用.