青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

S.l.e!ep.¢%

像打了激速一樣,以四倍的速度運(yùn)轉(zhuǎn),開(kāi)心的工作
簡(jiǎn)單、開(kāi)放、平等的公司文化;尊重個(gè)性、自由與個(gè)人價(jià)值;
posts - 1098, comments - 335, trackbacks - 0, articles - 1
  C++博客 :: 首頁(yè) :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理

下面的代碼我調(diào)試了將近一個(gè)星期,你能夠看出什么地方出了問(wèn)題嗎?

線程函數(shù):

DWORD?WINAPI?ThreadProc(
????
while ( ! bTerminate)
????
{
????????
// ?從一個(gè)鏈表中讀取信息并且插入到CListCtrl中
????????
// ?CListCtrl的句柄是通過(guò)線程參數(shù)傳遞進(jìn)來(lái)的
???????? for (;;)
???????
{
???????????ReadInfoFromList();
???????????InsertToCListCtrl();
????????}

????}

}
主線程中使用CreateThread啟動(dòng)線程。

當(dāng)想終止子線程時(shí),在主線程中:
bTerminate = TRUE;
WaitForSingleObject(threadHandle, INFINITE);
可是,以運(yùn)行到WaitForSingleObject,子線程就Crash了。

為什么呢?

問(wèn)題原因:
后來(lái)我終于在InsertItem的反匯編中發(fā)現(xiàn)了如下的代碼
call dword ptr [__imp__SendMessageA@16 (7C141B54h)]
可見(jiàn),InsertItem是必須借助消息循環(huán)來(lái)完成任務(wù)的。如果我們?cè)谥骶€程中WaitForSingleObject了,必然導(dǎo)致主線程阻塞,也就導(dǎo)致了消息循環(huán)的阻塞,最終導(dǎo)致工作線程Crash掉了*_*

解決方案:
為了解決在主線程中Wait的問(wèn)題,微軟專(zhuān)門(mén)設(shè)計(jì)了一個(gè)函數(shù)MsgWaitForMultipleObjects,這個(gè)函數(shù)即可以等待信號(hào)(thread,event,mutex等等),也可以等待消息(MSG)。即不論有信號(hào)被激發(fā)或者有消息到來(lái),此函數(shù)都可以返回。呵呵,那么我的解決辦法也就出來(lái)了。
將上面的WaitForSingleObject用下面的代碼替換:
while(TRUE)
{

????DWORD?result?;?
????MSG?msg?;?

????result?
=?MsgWaitForMultipleObjects(1,?&readThreadHandle,?
????????FALSE,?INFINITE,?QS_ALLINPUT);?

????
if?(result?==?(WAIT_OBJECT_0))
????
{
????????
break;
????}
?
????
else?
????
{?
????????PeekMessage(
&msg,?NULL,?0,?0,?PM_REMOVE);
????????DispatchMessage(
&msg);?
????}
?
}


總結(jié):
如果在工作線程中有可能涉及到了消息驅(qū)動(dòng)的API,那么不能在主線程中使用WaitForSingleObject一類(lèi)函數(shù),而必須使用上述的方案。

Feedback

# re: 在主線程中慎用WaitForSingleObject (WaitForMultipleObjects) (轉(zhuǎn))  回復(fù)  更多評(píng)論   

2009-06-26 11:42 by hhy
呵呵,頂一個(gè),少走彎路了 :)

# re: 在主線程中慎用WaitForSingleObject (WaitForMultipleObjects) (轉(zhuǎn))  回復(fù)  更多評(píng)論   

2009-12-02 10:11 by aaa
好文章要頂。

# re: 在主線程中慎用WaitForSingleObject (WaitForMultipleObjects) (轉(zhuǎn))  回復(fù)  更多評(píng)論   

2009-12-10 07:20 by Tiany
謝謝你的好文章! 我也為這個(gè)問(wèn)題煩惱了2天了 碰巧來(lái)到你這里 哈!給解決了 以后會(huì)經(jīng)常來(lái)看你的

# re: 在主線程中慎用WaitForSingleObject (WaitForMultipleObjects) (轉(zhuǎn))  回復(fù)  更多評(píng)論   

2010-03-27 01:31 by
我正遇到幾乎一樣的問(wèn)題了,仍然沒(méi)有解決。對(duì)你的觀點(diǎn)有疑問(wèn)。
我下面的代碼和你說(shuō)的幾乎一樣,但是每次都能正確執(zhí)行。?????
我的qq:312763408


DWORD CTestClistCtrlDlg:: ThreadSendData (LPVOID lParam)
{

CTestClistCtrlDlg *p = (CTestClistCtrlDlg*)lParam;

CString strOut;
int i = 0;
g_bStop = false;


while (!g_bStop)
{

p->m_ctlMyTable.InsertItem(i,"1");
p->m_ctlMyTable.SetItemText(i,1,"haha");
Sleep(1);
}

TRACE("end \n");
return 0;

}
void CTestClistCtrlDlg::OnBtnStop()
{
// TODO: Add your control notification handler code here
g_bStop = true;
WaitForSingleObject (m_hThread, INFINITE);
}
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            亚洲人永久免费| 好看的av在线不卡观看| 日韩视频一区二区在线观看| 欧美v日韩v国产v| 牛人盗摄一区二区三区视频| 免费成人在线观看视频| 久久综合色8888| 欧美成人在线免费视频| 亚洲东热激情| 99精品视频网| 性伦欧美刺激片在线观看| 久久精品午夜| 欧美激情一区二区三区不卡| 欧美色综合天天久久综合精品| 欧美视频在线一区二区三区| 国产精品中文字幕欧美| 狠久久av成人天堂| 亚洲理论在线观看| 午夜精品亚洲一区二区三区嫩草| 欧美一区二区视频在线观看| 老牛国产精品一区的观看方式| 亚洲国产成人在线播放| 亚洲素人在线| 久久久亚洲国产天美传媒修理工| 欧美大成色www永久网站婷| 国产精品乱码一区二区三区| 亚洲第一精品福利| 亚洲欧美日韩另类| 欧美激情五月| 亚洲在线视频免费观看| 蜜臀av性久久久久蜜臀aⅴ| 国产精品麻豆欧美日韩ww| 亚洲国产成人在线播放| 性欧美1819sex性高清| 亚洲国产日韩欧美在线图片| 午夜在线电影亚洲一区| 欧美日韩精品在线观看| 精品白丝av| 欧美在线黄色| 日韩西西人体444www| 久久久夜夜夜| 国产精品每日更新| 99亚洲一区二区| 美乳少妇欧美精品| 欧美在线|欧美| 国产精品乱人伦一区二区| 亚洲精品国久久99热| 久久手机免费观看| 亚洲欧美日韩国产综合| 国产精品第十页| 一区二区三区视频在线观看| 欧美成年视频| 久久国产视频网站| 国产一区二区观看| 欧美一级理论片| 99国产精品| 久久夜色精品国产亚洲aⅴ| 99精品视频网| 欧美国产综合视频| 亚洲黄色毛片| 欧美成人精品不卡视频在线观看| 久久国产高清| 国内成+人亚洲| 久久国产精品久久久久久电车| 亚洲一区二区三区在线观看视频| 欧美日韩日日骚| 亚洲视频久久| 亚洲午夜精品一区二区三区他趣 | 亚洲婷婷在线| 欧美日韩一区二区三区免费| 中文精品在线| 亚洲无毛电影| 国产精品一区二区女厕厕| 亚洲欧美综合v| 亚洲一区精品视频| 国产亚洲网站| 牛牛精品成人免费视频| 欧美3dxxxxhd| 日韩视频免费在线观看| 99国产精品久久久久久久久久| 欧美日韩精品一区二区三区| 亚洲一区在线播放| 小处雏高清一区二区三区| 国产亚洲美州欧州综合国| 久久免费国产精品| 欧美国产日韩精品| 性刺激综合网| 久久这里有精品视频| 99视频一区| 亚洲一线二线三线久久久| 国产亚洲一区二区三区| 美日韩在线观看| 欧美日韩亚洲国产精品| 久久精品国产69国产精品亚洲| 久久视频免费观看| 亚洲视频在线一区观看| 欧美在线观看网站| 亚洲欧洲一区二区在线播放| 亚洲最新中文字幕| 禁断一区二区三区在线 | 亚洲欧美日韩成人高清在线一区| 国产日韩亚洲| 亚洲激情电影中文字幕| 欧美日韩一区二区视频在线| 欧美在线一级va免费观看| 欧美成人精品一区二区三区| 欧美一区二区黄| 欧美a级片网| 欧美一区激情| 欧美精选一区| 久久先锋影音| 国产精品家庭影院| 亚洲成色www久久网站| 国产精品视频九色porn| 亚洲国产精品第一区二区三区| 国产区在线观看成人精品| 国精品一区二区三区| 日韩午夜三级在线| 亚洲电影自拍| 欧美一区在线看| 亚洲男女自偷自拍| 欧美国产精品劲爆| 麻豆av一区二区三区| 国产精品一区二区欧美| 亚洲毛片在线观看.| 亚洲国产欧美一区二区三区久久 | 欧美在线日韩精品| 欧美日韩国产免费观看| 欧美国产免费| 好吊成人免视频| 性色av香蕉一区二区| 亚洲欧美中文另类| 国产精品99免费看 | 国产精品免费看| 亚洲精品欧美一区二区三区| 亚洲第一区色| 久久久99久久精品女同性| 久久www成人_看片免费不卡| 欧美视频中文字幕| 亚洲毛片在线观看.| 99视频精品在线| 欧美巨乳在线观看| 亚洲精品免费在线播放| 亚洲精品一级| 欧美高清视频一区| 亚洲欧洲在线播放| 亚洲色无码播放| 欧美三级精品| 亚洲视频在线观看一区| 亚洲男人av电影| 国产欧美一区二区精品性| 亚洲一二三区在线| 亚洲欧美日韩一区在线| 国产精品网站在线| 欧美一区二区三区另类| 久久永久免费| 亚洲日韩成人| 欧美日韩一区在线播放| 亚洲天堂成人在线视频| 亚洲尤物影院| 国产一区二区三区精品欧美日韩一区二区三区 | 欧美二区视频| 亚洲日本成人网| 亚洲综合欧美日韩| 国产精品一区二区你懂得| 免费成人激情视频| 国产精品一区二区欧美| 中文日韩在线视频| 欧美一区二区三区免费观看视频| 国产伦精品一区二区三| 久久成人亚洲| 亚洲人成网在线播放| 亚洲一区二区三区免费观看| 国产精品夜夜夜| 久久久久久久网| 亚洲精品少妇| 久久国产精品久久精品国产| 伊人久久婷婷| 欧美色视频日本高清在线观看| 亚洲一区在线看| 亚洲电影毛片| 欧美在线免费观看| 99视频一区| 在线成人av网站| 欧美视频免费在线| 久久亚洲国产精品一区二区| 99精品久久久| 欧美第十八页| 久久久久国产一区二区三区| 91久久夜色精品国产九色| 国产精品午夜电影| 欧美精选在线| 美女主播精品视频一二三四| 亚洲欧美另类在线| 日韩网站在线看片你懂的| 美女主播精品视频一二三四| 欧美在线播放高清精品| 亚洲视频碰碰| 亚洲美女少妇无套啪啪呻吟| 亚洲看片一区|