根据MSDN:
WaitForSingleObject
函数可以等待以下对象:
Change notification
Console input
Event
Memory resource notification
Mutex
Process
Semaphore
Thread
Waitable timer
然后我们可以使用WaitForSingleObject
使父线程等待子线程。
int main()
{
HANDLE h_child_thread = CreateThread(0,0, child, 0,0,0); //create a thread in VC
WaitForSingleObject(h_child_thread, INFINITE); //So, parent-thread will wait
return 0;
}
问题
有没有其他方法可以让父线程在VC或Windows中等待子线程?
我不太明白WaitForSingleObject
在这里的用法,是否意味着当线程终止时线程的句柄可用?
答案 0 :(得分:1)
第一次排队 - 是的。这里常用的方法是“加入”。用法取决于语言。
在.NET C ++中,您可以使用Thread的Join方法。这是来自msdn:
Thread* newThread = new Thread(new ThreadStart(0, Test::Work));
newThread->Start();
if(newThread->Join(waitTime + waitTime))
{
Console::WriteLine(S"New thread terminated.");
}
else
{
Console::WriteLine(S"Join timed out.");
}
其次,当您使用“WaitForSingleObject”发出信号但句柄仍然有效(对于已终止的线程)时,线程将终止。所以你仍然需要用CloseHandle显式关闭句柄。
答案 1 :(得分:1)