Signle-object Wait Functions共三个分别是:
DWORD WaitForSingleObject(
HANDLE hHandle, // 对象句柄
DWORD dwMilliseconds // 定时时间间隔,单位为milliseconds(毫秒)
);
DWORD WaitForSingleObjectEx(
HANDLE hHandle, // 对象句柄
DWORD dwMilliseconds, // 定时时间间隔,单位为milliseconds(毫秒)
BOOL bAlertable
);
DWORD SignalObjectAndWait(
HANDLE hObjectToSignal, //
HANDLE hObjectToWaitOn, //
DWORD dwMilliseconds,
BOOL bAlertable
);
hHandle对象句柄可以指定一系列的对象,如Event、Job、Memory resource notification、Mutex、Process、Semaphore、Thread、Waitable timer等。当同步对象的状态变为signaled或者设置的等待时间到了,函数就会返回。
dwMilliseconds定时时间间隔,如果dwMilliseconds为0,对象没有被触发信号,函数不会进入一个等待状态,它总是立即返回。如果dwMilliseconds为INFINITE,对象被触发信号后,函数才会返回。
bAlertable,如果此参数为true,且线程处于等待状态,则当系统存在排队的I/O例程或APC时,该线程运行该I/O例程或APC并返回。否则,函数将不返回。
SignalObjectAndWiat功能比较强大,能够以原子的方式,设置第一个同步对象为signaled,并等待另外一个同步对象。
返回值:
状态 | 意义 |
---|---|
WAIT_ABANDONED | 当hHandle为mutex时,如果拥有mutex的线程在结束时没有释放核心对象会引发此返回值。 |
WAIT_OBJECT_0 | 指定的对象出有有信号状态 |
WAIT_TIMEOUT | 等待超时 |
WAIT_FAILED | 出现错误,可通过GetLastError得到错误代码 |
Demo:
svn://gitee.com/sudaidai/Knowledge_List_of_C
文件夹路径:WindowsAPI/Wait Functions/Signle-object