作用
等待直到指定的对象处于信号状态或超时间隔过去。
句法
DWORD WaitForSingleObject(
[in] HANDLE hHandle,
[in] DWORD dwMilliseconds
);
参数解释
[in] hHandle //指明一个内核对象的句柄
对象的句柄。有关可以指定其句柄的对象类型的列表,请参阅以下备注部分。
如果在等待仍处于挂起状态时关闭此句柄,则函数的行为未定义。
句柄必须具有SYNCHRONIZE访问权限。
[in] dwMilliseconds //等待时间
超时间隔,以毫秒为单位。如果指定了非零值,则函数会一直等待,直到对象发出信号或间隔过去。如果dwMilliseconds为零,则如果对象未发出信号,则函数不会进入等待状态;它总是立即返回。如果dwMilliseconds是INFINITE,则该函数将仅在对象发出信号时返回。
函数返回值
例子
#include <stdio.h>
#include <windows.h>
#include <process.h>
unsigned int __stdcall ThreadFun(LPVOID p)
{
int cnt = *((int*)p);
for (int i = 0; i < cnt; i++)
{
Sleep(1000);
puts("running thread");
}
return 0;
}
int main()
{
printf("main begin\n");
int iParam = 5;
unsigned int dwThreadID;
DWORD wr;
HANDLE hThread = (HANDLE)_beginthreadex(NULL, 0, ThreadFun,(void*)&iParam, 0, &dwThreadID);
if (hThread == NULL)
{
puts("_beginthreadex() error");
return -1;
}
//
printf("WaitForSingleObject begin\n");
if ((wr = WaitForSingleObject(hThread, INFINITE)) == WAIT_FAILED)
{
puts("thread wait error");
return -1;
}
printf("WaitForSingleObject end\n");
printf("main end\n");
system("pause");
return 0;
}