乐趣区

关于c++:C-多线程

CreateEvent

CreateEvent(
    __in_opt LPSECURITY_ATTRIBUTES lpEventAttributes,
    __in     BOOL bManualReset,
    __in     BOOL bInitialState,
    __in_opt LPCSTR lpName
    );

bManualReset: 指定将事件对象创立成手动还原还是主动还原。如果是 TRUE,那么必须用 ResetEvent 函数来手工将事件的状态还原到无信号状态。如果是 FALSE,当事件被一个期待线程开释当前,零碎将会主动将事件状态还原为无信号状态。bInitialState:指定事件对象的初始状态;当 TRUE, 初始状态为有信号状态;当 FALSE, 初始状态为无信号状态。

SetEvent / ResetEvent

别离将 EVENT 置为这两种状态别离是有信号状态与无信号

WaitForSingleObject / WaitForMultipleObjects

WaitForSingleObject(
    _In_ HANDLE hHandle,
    _In_ DWORD dwMilliseconds
    );
    
参数 hHandle 是一个事件的句柄,第二个参数 dwMilliseconds 是工夫距离。如果工夫是有信号状态返回 WAIT_OBJECT_0,如果工夫超过 dwMilliseconds 值但工夫事件还是无信号状态则返回 WAIT_TIMEOUT。WaitForSingleObject 的返回值有以下三种状况:WAIT_OBJECT_0:示意你期待的对象(比方线程、互斥体)已的失常执行实现或实现开释。WAIT_TIMEOUT:示意你期待的对象在还没实现之前,由 WaitForSingleObject 设置的工夫曾经超时。WAIT_ABANDONED:这是针对期待对象是互斥体的状况,当互斥体对象尽管没有被占用它的线程开释,然而占用它的线程已提前停止时,WaitForSingleObject 就返回此值。WaitForSingleObject 函数用来检测 hHandle 事件的信号状态
当函数的执行工夫超过 dwMilliseconds 就返回,如果参数 dwMilliseconds 为 INFINITE 时 函数将直到相应工夫事件变成有信号状态才返回,否则就始终期待上来,直到 WaitForSingleObject 有返回直才执行前面的代码。
退出移动版