上一主题下一主题
关键字
主题 : Waitforsingleobject 的返回值 WAIT_ABANDONED的问题
级别: 北风技术菜鸟

UID: 470411
精华: 0
发帖: 320
威望: 1581 点
学点: 790 点
贡献: 0 点
好评: 0 点
学币: 0 个
注册时间: 2014-06-27
最后登录: 2015-03-25
楼主  发表于: 2015-03-25 13:28||

Waitforsingleobject 的返回值 WAIT_ABANDONED的问题

jSAjcLR  
WaitForSingleObject(   9S-9.mvop  
                  HANDLE hHandle,   j)GtEP<n#  
                   DWORD dwMilliseconds         n}V_,:Z  
              ); P2*<GjV`S/  
1、  返回值为  WAIT_ABANDONED                 是   “当hHandle为mutex时候,该对象没有被拥有该对象的线程在线程结束前释放,对象会引发此返回值” d M-%{  
        我不理解  这个  WAIT_ABANDONED             ,为什么不是返回 WAIT_TIMEOUT        ? 没有释放线程,不是也应该超时吗,“没有释放”是不是我理解有问题? (M ~e?s  
2、第二个问题应该是我基本功不扎实了 ,iq4Iw  
第一段 ujucZ9}yd  
0AV c  
  UINT CFlushDlg::MyThreadProc( LPVOID pParam ) z"4~P3>{g  
{ r)6M!_]AW  
WaitForSingleObject(g_event,INFINITE); LraWcO\or'  
For(;;) rc>6.sM %  
{ i2^>vYCsl  
…………. (%:c#;#  
} lu6 (C  
return 0;  :#~j:C|  
} t!\tF[9e  
>6pf$0  
这段没有判断,那到底是什么状态执行FOR循环呢? N{~Y J$!8  
第二段我就能够理解了~ .K<Q&  
I15{)o(8$  
第二段 bD8Gwi=iiu  
D{~fDRR  
UINT CFlushDlg::MyThreadProc( LPVOID pParam ) SG4%}wn%  
{ ~**.|%Kc  
while(WaitForSingleObject(g_event,MT_INTERVAL)!=WAIT_OBJECT_0) mS~kJy_-  
{ XN u^`Ha  
……………… NS6:yX,/  
} Clb@$,  
return 0; we?76t:-  
} ^B 2 -)  
此帖悬赏中(剩余时间:已结束)...
最佳答案: 2 学点
热心助人剩余点数: 1 学点
级别: 北风资深工程师

UID: 472681
精华: 0
发帖: 1791
威望: 1815 点
学点: 2095 点
贡献: 0 点
好评: 0 点
学币: 0 个
注册时间: 2014-07-10
最后登录: 2015-04-07
沙发(1楼)  发表于: 2015-03-25 13:28||

The thread consumes very little processor time while waiting for the object state to become signaled or the time-out interval to elapse. C49 G&  
此函数等待时只消耗很少的 ****器时间,不会导致你说的崩溃的。
级别: 北风资深工程师

UID: 472685
精华: 0
发帖: 1930
威望: 1946 点
学点: 3280 点
贡献: 0 点
好评: 0 点
学币: 0 个
注册时间: 2014-07-10
最后登录: 2015-04-08
板凳(2楼)  发表于: 2015-03-25 13:28||

WAIT_ABANDONED_# 表示对应的等待条件满足 Y$K!7Kq  
WAIT_TIMEOUT 表示等待超时 ` mfq 2bVc  
你说如何区别不同状态,这是函数的内部实现了
级别: 北风资深评论员


UID: 470398
精华: 0
发帖: 3024
威望: 3862 点
学点: 8642 点
贡献: 90 点
好评: 0 点
学币: 112 个
注册时间: 2014-06-27
最后登录: 2015-04-07
地板(3楼)  发表于: 2015-03-25 13:29||

第一段用了第二个参数为 INFINITE,表示无限等待,直到等到对应的事件,所以返回时表示等到了。 F>]#}_  
第二段的第二个参数为某个时间间隔,有可能超时,所以要检测返回值看是否真正等到事件发生。