WaitForSingleObject无限期地等待线程终止

时间:2014-08-14 18:09:23

标签: c multithreading winapi

我有两个功能:

Fl_Thread n_create_thread(Fl_Thread &t, void *(*f) (void *), void *p) 
{
    return t = (Fl_Thread)_beginthread((void(__cdecl *)(void *))f, 0, p);    
}

void n_wait_end_thread(Fl_Thread t) 
{
    WaitForSingleObject((HANDLE)t, INFINITE);    
}

创建线程,给出线程函数的指针,但如果我等待WaitForSingleObject终止线程,它会挂起并且不能停止等待。

1 个答案:

答案 0 :(得分:1)

等待时,您的线程句柄可能无效 - 请改为使用_beginthreadex - see the MSDN page

  

使用_beginthreadex比使用_beginthread更安全。如果线程   由_beginthread生成的快速退出,即句柄   返回给_beginthread的调用者可能无效或指向   另一个线程。但是,_beginthreadex返回的句柄   必须由_beginthreadex的调用者关闭,所以它是有保证的   如果_beginthreadex没有返回错误,则为有效句柄。