对WaitForSingleObject不太了解 求解释
对WaitForSingleObject不太理解 求解释
看到程序里使用了很多WaitForSingleObject,去百度查了查,
解释如下:
WaitForSingleObject函数用来检测hHandle事件的信号状态,在某一线程中调用该函数时,线程暂时挂起,如果在挂起的dwMilliseconds毫秒内,线程所等待的对象变为有信号状态,则该函数立即返回;如果超时时间已经到达dwMilliseconds毫秒,但hHandle所指向的对象还没有变成有信号状态,函数照样返回。参数dwMilliseconds有两个具有特殊意义的值:0和INFINITE。若为0,则该函数立即返回;若为INFINITE,则线程一直被挂起,直到hHandle所指向的对象变为有信号状态时为止。
返回值:
WAIT_ABANDONED 0x00000080:当hHandle为mutex时,如果拥有mutex的线程在结束时没有释放核心对象会引发此返回值。
WAIT_OBJECT_0 0x00000000 :核心对象已被激活
WAIT_TIMEOUT 0x00000102:等待超时
WAIT_FAILED 0xFFFFFFFF :出现错误,可通过GetLastError得到错误代码
那下面这一段怎么理解?
这里好像是“间隔的执行一个线程函数的函数体”
怎么理解?此时是在执行m_hThreadExitEvent指向的函数吗?为什么在不等于WAIT_OBJECT_0的情况下继续执行呢?
刚开始接触多线程
求教了
------解决方案--------------------
那个事件标识线程退出,如果置了退出事件,线程退出,释放文件对象,并返回ABORT。
------解决方案--------------------
WAIT_OBJECT_0表示m_hThreadExitEvent代表的线程退出了;
超时用WAIT_TIMEOUT,表示你等了10时间后,线程还未退出。你这边就一直阻塞等待呗、、
------解决方案--------------------
那代码就是等待 m_hThreadExitEvent 线程10毫秒,之后就继续往下走
看到程序里使用了很多WaitForSingleObject,去百度查了查,
解释如下:
WaitForSingleObject函数用来检测hHandle事件的信号状态,在某一线程中调用该函数时,线程暂时挂起,如果在挂起的dwMilliseconds毫秒内,线程所等待的对象变为有信号状态,则该函数立即返回;如果超时时间已经到达dwMilliseconds毫秒,但hHandle所指向的对象还没有变成有信号状态,函数照样返回。参数dwMilliseconds有两个具有特殊意义的值:0和INFINITE。若为0,则该函数立即返回;若为INFINITE,则线程一直被挂起,直到hHandle所指向的对象变为有信号状态时为止。
返回值:
WAIT_ABANDONED 0x00000080:当hHandle为mutex时,如果拥有mutex的线程在结束时没有释放核心对象会引发此返回值。
WAIT_OBJECT_0 0x00000000 :核心对象已被激活
WAIT_TIMEOUT 0x00000102:等待超时
WAIT_FAILED 0xFFFFFFFF :出现错误,可通过GetLastError得到错误代码
那下面这一段怎么理解?
if (WaitForSingleObject(m_hThreadExitEvent, 10) == WAIT_OBJECT_0)
{
findFile.Close();
return ABORT_MODE;
}
CString str = Name1;
....// do something....
这里好像是“间隔的执行一个线程函数的函数体”
怎么理解?此时是在执行m_hThreadExitEvent指向的函数吗?为什么在不等于WAIT_OBJECT_0的情况下继续执行呢?
刚开始接触多线程
求教了
------解决方案--------------------
那个事件标识线程退出,如果置了退出事件,线程退出,释放文件对象,并返回ABORT。
------解决方案--------------------
WAIT_OBJECT_0表示m_hThreadExitEvent代表的线程退出了;
超时用WAIT_TIMEOUT,表示你等了10时间后,线程还未退出。你这边就一直阻塞等待呗、、
------解决方案--------------------
那代码就是等待 m_hThreadExitEvent 线程10毫秒,之后就继续往下走