首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > VC/MFC >

WaitForSingleObject的使用有关问题

2012-01-11 
WaitForSingleObject的使用问题![codeC/C++][/code]if(WAIT_OBJECT_0 WaitForSingleObject(m_ThreadAp

WaitForSingleObject的使用问题!
[code=C/C++][/code]if(WAIT_OBJECT_0 == WaitForSingleObject(m_ThreadApproach->m_hThread,INFINITE)) //m_hThread为线程句柄!
{
delete m_ThreadApproach;
m_ThreadApproach = NULL;
}
请问“WAIT_OBJECT_0 == WaitForSingleObject(m_ThreadApproach->m_hThread,INFINITE)”是怎么工作的!INFINITE参数不是一直要等吗?还有m_ThreadApproach->m_hThread是线程的句柄怎么会有返回的WAIT_OBJECT_0呢?

谢谢!

[解决办法]

WaitForSingleObject

函数在以下两种情况下返回:

1、指定的对象有信号;

2、超时;


如果使用了 INFINITE ,就表示不会超时,只有对象有信号才会返回。
[解决办法]
INFINITE参数不是一直要等吗?
对,一直等,或者等待的事件发生

WaitForSingleObject返回WAIT_OBJECT_0表示等待的事件已经返回了,详情请查看msdn
[解决办法]
如果函数失败那么传回WAIT_FAILED。

如果不想长期的等待下去,可以设置一个时间。
[解决办法]
等的是m_ThreadApproach->m_hThread是一个线程的句柄
========================
不是等这个句柄,还是当这个句柄有信号时就返回,这是一个线程句柄,所以当线程结束时,就会有信号.
[解决办法]
线程也有分为两中状态:有信号(signaled state)和无信号(nonsignaled state)。当线程还没结束期间该线程都处于nonsignaled state(哪怕是挂起了,阻塞了),当线程结束时,该线程就处于signaled state。现在你明白了吧。
[解决办法]
补充:m_hThread关联一个内核对象
[解决办法]
m_ThreadApproach->m_hThread是线程的句柄无效时,函数返回了,不会等待下去了
[解决办法]
up

热点排行