Signle-object Wait Functions

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

你可能感兴趣的:(Signle-object Wait Functions)