用户模式同步之事件小解
事件(和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;
}