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

隨筆 - 2, 文章 - 73, 評(píng)論 - 60, 引用 - 0
數(shù)據(jù)加載中……

WaitForMultipleObjects用法探索

WaitForMultipleObjectsWindows中的一個(gè)功能非常強(qiáng)大的函數(shù),幾乎可以等待Windows中的所有的內(nèi)核對(duì)象(關(guān)于該函數(shù)的描述和例子見MSDN,)。但同時(shí)該函數(shù)在用法上卻需要一定的技巧。

原型DWORD WaitForMultipleObjects(
 DWORD nCount,
 const HANDLE* lpHandles,
 BOOL bWaitAll,
 DWORD dwMilliseconds
);

 

當(dāng)WaitForMultipleObjects等到多個(gè)內(nèi)核對(duì)象的時(shí)候,如果它的bWaitAll 參數(shù)設(shè)置為false。其返回值減去WAIT_OBJECT_0 就是參數(shù)lpHandles數(shù)組的序號(hào)。如果同時(shí)有多個(gè)內(nèi)核對(duì)象被出發(fā),這個(gè)函數(shù)返回的只是其中序號(hào)最小的那個(gè)。

問題就在這里,我們?nèi)绾慰梢垣@取所有被同時(shí)觸發(fā)的內(nèi)核對(duì)象。舉個(gè)例子:我們需要在一個(gè)線程中處理從完成端口、數(shù)據(jù)庫、和可等待定時(shí)器來的數(shù)據(jù)。一個(gè)典型的實(shí)現(xiàn)方法就是:用WaitForMultipleObjects等待所有的這些事件。如果完成端口,數(shù)據(jù)庫發(fā)過來的數(shù)據(jù)量非常大,可等待定時(shí)器時(shí)間也只有幾十毫秒。那么這些事件同時(shí)觸發(fā)的幾率可以說非常大,我們不希望丟棄任何一個(gè)被觸發(fā)的事件。那么如何能高效地實(shí)現(xiàn)這一處理呢?

MSDN中有一句非常重要的描述,它可以說是WaitForMultipleObjects用法的精髓:The function modifies the state of some types of synchronization objects. Modification occurs only for the object or objects whose signaled state caused the function to return. For example, the count of a semaphore object is decreased by one. When bWaitAll is FALSE, and multiple objects are in the signaled state, the function chooses one of the objects to satisfy the wait; the states of the objects not selected are unaffected.

多個(gè)內(nèi)核對(duì)象被觸發(fā)時(shí),WaitForMultipleObjects選擇其中序號(hào)最小的返回。而WaitForMultipleObjects它只會(huì)改變使它返回的那個(gè)內(nèi)核對(duì)象的狀態(tài)。

這兒又會(huì)產(chǎn)生一個(gè)問題,如果序號(hào)最小的那個(gè)對(duì)象頻繁被觸發(fā),那么序號(hào)比它大的內(nèi)核對(duì)象將得不到被處理的機(jī)會(huì)。

為了解決這一問題,可以采用雙WaitForMultipleObjects檢測機(jī)制來實(shí)現(xiàn)。見下面的例子:

DWORD WINAPI ThreadProc(LPVOID lpParameter)

{

    DWORD dwRet = 0;

    int   nIndex = 0;

    while(1)

    {

        dwRet = WaitForMultipleObjects(nCount,pHandles,false,INFINITE);

 

        switch(dwRet)

        {

        case WAIT_TIMEOUT:

            break;

        case WAIT_FAILED:

            return 1;

        default:

            {

                nIndex = dwRet - WAIT_OBJECT_0;

 

                ProcessHanlde(nIndex++);

                //同時(shí)檢測其他的事件

                while(nIndex < nCount)

                {

                    dwRet = WaitForMultipleObjects(nCount - nIndex,&pHandles[nIndex],false,0);

 

                    switch(dwRet)

                    {

                    case WAIT_TIMEOUT:

                        nIndex = nCount; //退出檢測,因?yàn)闆]有被觸發(fā)的對(duì)象了.

                        break;

                    case WAIT_FAILED:

                        return 1;

                    default:

                        {

                            nIndex = dwRet - WAIT_OBJECT_0;

                            ProcessHanlde(nIndex++);

                        }

                        break

                    }

                }

            }

            break;

        }

    }

    return 0;

}

posted on 2007-12-25 11:09 郭天文 閱讀(3834) 評(píng)論(1)  編輯 收藏 引用 所屬分類: VC++Windows Mobile

評(píng)論

# re: WaitForMultipleObjects用法探索  回復(fù)  更多評(píng)論   

解決辦法真巧妙,支持!
2010-02-04 13:04 | mark
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <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| 欧美欧美在线| 日韩午夜剧场| 亚洲国产综合91精品麻豆| 久久精品九九| 久久亚洲精品一区| 麻豆免费精品视频| 欧美激情一区二区在线| 亚洲精品激情| 亚洲一区二区网站| 西西人体一区二区| 久热国产精品视频| 欧美日韩播放| 亚洲电影天堂av| 亚洲国产精品成人精品| 亚洲欧洲精品一区二区三区波多野1战4 | 午夜亚洲影视| 可以免费看不卡的av网站| 欧美区在线观看| 国产精品稀缺呦系列在线| 国产精品久久久久久久久| 国产亚洲人成a一在线v站| 亚洲欧洲日本在线| 午夜精品久久久久久久久久久久| 久久久蜜臀国产一区二区| 欧美电影资源| 国产精品99久久久久久人| 欧美专区在线观看| 欧美手机在线视频| 一区二区视频免费在线观看| 亚洲片国产一区一级在线观看| 一本色道久久加勒比精品| 亚洲午夜电影| 欧美激情影音先锋| 日韩一级不卡| 久久五月激情| 欧美日韩一区二区三区在线看| 国产综合av| 亚洲天堂成人在线观看| 男女激情久久| 久久久国际精品| 国产欧美欧洲在线观看| 亚洲制服少妇| 一本色道久久综合狠狠躁篇的优点| 噜噜噜躁狠狠躁狠狠精品视频 | 嫩草影视亚洲| 99热精品在线| 欧美一区二区福利在线| 欧美18av| 久久久久久穴| 国产一区二区日韩精品| 午夜国产一区| 亚洲图片在区色| 欧美日韩视频在线观看一区二区三区| 亚洲福利免费| 免费观看在线综合色| 久久精品最新地址| 国内精品久久久久久久影视麻豆| 午夜精品久久久久久久久久久| 亚洲精品影视| 欧美日韩亚洲综合| 亚洲网站视频福利| 91久久久国产精品| 欧美精品二区| 亚洲一二三区在线观看| 亚洲视频日本| 国产欧美精品| 久久久久久电影| 久久精品夜色噜噜亚洲aⅴ| 国产一区二区成人| 久久免费视频在线观看| 久久国产视频网| 18成人免费观看视频| 美女啪啪无遮挡免费久久网站| 久久久欧美精品sm网站| 亚洲国产成人av在线| 亚洲高清在线| 欧美天堂在线观看| 欧美一区二区三区视频| 欧美一区永久视频免费观看| 在线观看国产成人av片| 欧美激情在线观看| 欧美无砖砖区免费| 久久深夜福利免费观看| 欧美国产大片| 亚洲一区黄色| 久久精品麻豆| 国产精品99久久久久久久久| 午夜激情亚洲| 日韩亚洲成人av在线| 亚洲专区一区| 亚洲精品护士| 欧美在线观看视频在线| 亚洲日本理论电影| 亚洲欧美日韩系列| 亚洲国产视频直播| 亚洲欧美激情一区| 日韩午夜三级在线| 欧美一级久久久| 日韩午夜激情电影| 亚洲欧美中文日韩v在线观看| 亚洲国产日韩一区| 新67194成人永久网站| 日韩一区二区免费看| 新狼窝色av性久久久久久| 99视频精品免费观看| 久久精品国产成人| 亚洲淫性视频| 欧美在线免费| 男女激情视频一区| 一本色道久久综合狠狠躁篇的优点 | 国产精品二区在线观看| 久久综合亚州| 国产精品夫妻自拍| 亚洲国产欧美在线| 狠狠色狠狠色综合| 中文国产成人精品久久一| 亚洲电影欧美电影有声小说| 亚洲一区二区精品在线观看| 日韩视频三区| 久久综合国产精品台湾中文娱乐网| 一区二区日韩免费看| 欧美91福利在线观看| 久久综合一区二区| 国产一区二区精品| 在线一区日本视频| 一区二区欧美日韩视频| 欧美激情一区在线观看| 亚洲高清三级视频| 亚洲激情婷婷| 久久久综合网站| 欧美v国产在线一区二区三区| 国产一区二区三区在线观看精品 | 欧美国产综合| 欧美国产视频日韩| 亚洲激情网站| 欧美韩日一区二区三区| 亚洲成人在线免费| 欧美一区二区三区日韩| 国产精品v欧美精品v日韩| 亚洲精选国产| 国产精品久久久久影院亚瑟 | 一区二区三区视频在线看| 99精品欧美一区| 欧美激情区在线播放| 亚洲激情成人| 一区二区三区视频在线播放| 欧美大片va欧美在线播放| 亚洲精品乱码视频| 中文国产成人精品久久一| 欧美日韩另类字幕中文| 一区二区三区色| 欧美激情亚洲另类| 一区二区三区.www| 国产精品免费网站| 久久精品国产2020观看福利| 国产日韩一区二区| 久久久久久久久久久成人| 欧美激情一区二区三区不卡| 宅男噜噜噜66一区二区| 国产精品高清在线| 亚洲免费在线播放| 免费一级欧美片在线观看| 99国产精品国产精品久久| 欧美日韩中文字幕在线视频| 亚洲你懂的在线视频| 欧美14一18处毛片| 亚洲一区二区伦理| 激情欧美亚洲| 欧美日韩亚洲高清一区二区| 亚洲欧美视频一区二区三区| 嫩模写真一区二区三区三州| 亚洲一区精品在线| 亚洲电影毛片| 国产精品丝袜91| 免费在线观看日韩欧美| 亚洲日本国产| 久久精品国产99| 在线一区二区日韩| 伊人久久亚洲影院| 欧美视频一区二区三区…| 新狼窝色av性久久久久久| 亚洲免费av观看| 欧美插天视频在线播放| 亚洲欧美在线一区二区| 亚洲精品小视频在线观看| 国模 一区 二区 三区| 欧美三区在线视频| 你懂的国产精品永久在线| 欧美一区二区三区四区在线 | 久色成人在线| 午夜精品视频在线观看一区二区| 91久久视频| 男女视频一区二区| 久久乐国产精品| 欧美亚洲免费在线| 亚洲一区二区三区欧美| 亚洲精品亚洲人成人网| 亚洲高清不卡在线观看| 国产一区二区三区在线观看免费视频 |