HANDLE m_Event[2]
m_Event[0] = CreateEvent(NULL, FALSE, FALSE, NULL)
m_Event[1] = CreateEvent(NULL, FALSE, FALSE, NULL)
这样,你可以用m_Event[0] 来表示退出事件,m_Event[1]来表示你现在的handle
然后用WaitForMultipleObjects(2,m_Event, FALSE, INFINITE),第三个参数为不等待所有信号,即等待任何一个激发信号都可以返回,这样,你线程函数如下使用,只要2个event任何一个激发,你都可以检查状态,是退出或者等到对象
DWORD dr
while (true)
{
dr = WaitForMultipleObjects(2,m_Event, FALSE, INFINITE)
switch (dr)
{
case WAIT_OBJECT_0://退出线程
return 0
case WAIT_OBJECT_0+1://这里等同于你WaitForSingleObject的拿带衡处理
//........
break
}
}
这样你主线程想结束线程时,只要SetEvent(m_Event[0] );线程就退出了
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)