目录
前言
之前一直对Event这类用法似懂非懂,说懂一点是因为之前探究过Windows底层对Event这类同步对象的实现机制,说不懂是因为其参数一直容易搞混,也不明白其各种应用场合,今天在调试器的编写过程中发现必须采用多线程,采用多线程就要涉及线程同步问题,今天就利用这个机会来分析一下Event的实现机制。
WINAPI
CreateEventA(
_In_opt_ LPSECURITY_ATTRIBUTES lpEventAttributes,
_In_ BOOL bManualReset,
_In_ BOOL bInitialState,
_In_opt_ LPCSTR lpName
);
"信号"是个什么东西
之前一直比较困惑的是什么是"有信号"状态,现在我们来解释一下。在线程同步过程中,存在两个对象,一个是等待对象,一个是被等待对象,"等待对象"使用WaitForSingleObject来等待"被等待对象"完成工作,两者在这里通过一个Event来表示,当右边完成工作时,其会让Event变为有信号状态,此时左边就会接收到该信号,此时左边就会继续执行其动作。