用户模式同步之事件小解

Posted _Flame

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了用户模式同步之事件小解相关的知识,希望对你有一定的参考价值。

事件(和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;
}

 

以上是关于用户模式同步之事件小解的主要内容,如果未能解决你的问题,请参考以下文章

用户模式同步之信号量小解

Swing图形用户界面编程之事件处理模式

高性能 I/O 设计模式之Reactor

进阶学习5:JavaScript异步编程——同步模式异步模式调用栈工作线程消息队列事件循环回调函数

Redis原理篇之网络模型

C ++的用户模式同步库[关闭]