1. 程式人生 > >用戶模式同步之事件小解

用戶模式同步之事件小解

read set printf fin false eve hello 我們 del

事件(和WaitForSingleObject等待函數配套)
如果我們要用事件一定記住的是利用CreateEvent(LPSECURITY,BOOL(手動or自動),BOOL(初始狀態),LPCTSTR(NAME))

初始化事件
對於第二參數的手動還是自動選擇自動就行,因為手動的話遇到WaitForSingleObject的時候還得自己設置變成未激發狀態,自動
的話當遇到WaitForSingleObject會自動變為未激發狀態
一般思路:
1.初始化事件,
2.事件返回的句柄作為參數傳入線程
3.然後在線程函數裏面打印輸出等操作,完了之後SetEvent設置事件激發即可
4.記住最後WaitForSingleObject變為激發態等的是事件句柄!!

偽代碼:

//自動下遇到WaitForSingleObject會自動變成未激發狀態

int main()
{
HANDLE EventHandle=CreateEvent(NULL,FALSE,FALSE,NULL);
HANDLE ThreadHandle=(HANDLE)_beginthreadex (NULL,0,Thread,&EventHandle,0,NULL);
WaitForSingleObject(EventHandle,INFINITE);
return 0;
}
DWORD WINAPI Thread(LPVOID Para)
{
HANDLE* V1=(HANDLE*)Para;
SetEvent(*V1);//事件設置激發
printf("hello\r\n");
return 0;
}

用戶模式同步之事件小解