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

隨筆 - 2, 文章 - 73, 評論 - 60, 引用 - 0
數據加載中……

WaitForMultipleObjects用法探索

WaitForMultipleObjectsWindows中的一個功能非常強大的函數,幾乎可以等待Windows中的所有的內核對象(關于該函數的描述和例子見MSDN,)。但同時該函數在用法上卻需要一定的技巧。

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

 

WaitForMultipleObjects等到多個內核對象的時候,如果它的bWaitAll 參數設置為false。其返回值減去WAIT_OBJECT_0 就是參數lpHandles數組的序號。如果同時有多個內核對象被出發,這個函數返回的只是其中序號最小的那個。

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

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.

多個內核對象被觸發時,WaitForMultipleObjects選擇其中序號最小的返回。而WaitForMultipleObjects它只會改變使它返回的那個內核對象的狀態。

這兒又會產生一個問題,如果序號最小的那個對象頻繁被觸發,那么序號比它大的內核對象將得不到被處理的機會。

為了解決這一問題,可以采用雙WaitForMultipleObjects檢測機制來實現。見下面的例子:

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++);

                //同時檢測其他的事件

                while(nIndex < nCount)

                {

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

 

                    switch(dwRet)

                    {

                    case WAIT_TIMEOUT:

                        nIndex = nCount; //退出檢測,因為沒有被觸發的對象了.

                        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 郭天文 閱讀(3844) 評論(1)  編輯 收藏 引用 所屬分類: VC++Windows Mobile

評論

# re: WaitForMultipleObjects用法探索  回復  更多評論   

解決辦法真巧妙,支持!
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>
            久久成人在线| 欧美成人黑人xx视频免费观看| 91久久夜色精品国产九色| 久久久久久久999精品视频| 国产亚洲亚洲| 蜜桃av综合| 欧美成人精品在线观看| 亚洲麻豆av| 在线亚洲国产精品网站| 国产日本亚洲高清| 久久噜噜噜精品国产亚洲综合| 久久国产精品亚洲va麻豆| 韩国v欧美v日本v亚洲v| 欧美v国产在线一区二区三区| 欧美成人网在线| 一区二区三区欧美| 性欧美暴力猛交另类hd| 亚洲大胆av| 夜夜嗨一区二区三区| 国产一区二区三区免费不卡| 亚洲第一黄色| 国产精品hd| 老司机午夜精品视频| 欧美国产另类| 久久av一区| 欧美jizzhd精品欧美巨大免费| 亚洲专区一区| 久久亚洲国产精品一区二区| 夜夜狂射影院欧美极品| 欧美一区二区三区视频免费播放 | 亚洲一区二区免费看| 国产一区二区三区久久悠悠色av| 亚洲国产欧美日韩| 国产精品日日做人人爱| 亚洲成人资源网| 国产精品视频最多的网站| 牛牛精品成人免费视频| 国产精品捆绑调教| 亚洲黄页视频免费观看| 国产综合自拍| 一区二区三区高清| 亚洲激情视频网站| 香蕉av福利精品导航| 日韩五码在线| 美女视频网站黄色亚洲| 亚洲欧美在线一区| 欧美日韩精品一区二区天天拍小说 | 日韩视频―中文字幕| 小辣椒精品导航| 一区二区三区四区五区精品| 久久一综合视频| 欧美在线日韩精品| 国产精品久久久久一区二区三区共| 欧美大片在线影院| 国产在线精品成人一区二区三区| 一区二区三区毛片| 99精品黄色片免费大全| 老司机久久99久久精品播放免费 | 亚洲欧洲一区二区天堂久久 | 午夜欧美电影在线观看| av成人动漫| 欧美xx视频| 欧美成人精品一区二区三区| 国内精品伊人久久久久av影院| 亚洲手机视频| 亚洲一区二区三区久久| 欧美三日本三级三级在线播放| 亚洲精品乱码久久久久久久久 | 国产一区二区三区黄视频| 亚洲午夜一级| 欧美一区二区三区在线免费观看| 欧美午夜精品一区| 一区二区三区国产在线观看| 中日韩高清电影网| 欧美日本中文字幕| 亚洲毛片播放| 亚洲免费网站| 国产精品影片在线观看| 亚洲欧美视频一区| 久久香蕉精品| 亚洲人永久免费| 欧美色欧美亚洲另类二区| 一区二区欧美激情| 欧美伊人久久| 亚洲电影中文字幕| 欧美日本精品| 亚洲欧美综合国产精品一区| 久久精品系列| 亚洲福利视频网| 欧美日韩伦理在线| 午夜精品视频网站| 欧美成人国产va精品日本一级| 亚洲精品一区中文| 国产精品有限公司| 美女任你摸久久| 99精品国产高清一区二区| 午夜宅男欧美| 亚洲精品一二| 国产精品日韩欧美一区| 久久精品99无色码中文字幕 | 亚洲一线二线三线久久久| 国产欧美在线观看| 可以看av的网站久久看| 亚洲三级视频| 久久久久国内| 制服丝袜激情欧洲亚洲| 红杏aⅴ成人免费视频| 欧美精品999| 亚洲欧美日韩一区二区在线| 欧美电影资源| 性视频1819p久久| 99国产欧美久久久精品| 国产亚洲精品福利| 欧美日韩亚洲免费| 免费影视亚洲| 欧美一区二区三区成人| 亚洲黄网站在线观看| 久久精品国产综合| 亚洲性av在线| 亚洲美女一区| 亚洲动漫精品| 狠狠88综合久久久久综合网| 欧美涩涩视频| 欧美国产高清| 玖玖玖国产精品| 久久精品av麻豆的观看方式| 亚洲一区二区在线免费观看视频| 欧美激情四色| 蜜桃久久精品乱码一区二区| 欧美伊久线香蕉线新在线| 一本色道久久综合亚洲精品按摩| 伊人蜜桃色噜噜激情综合| 国产精品五月天| 国产精品亚洲综合久久| 欧美日韩精品二区| 欧美精品大片| 欧美激情综合色| 欧美国产视频在线| 你懂的视频一区二区| 久久综合五月| 美女尤物久久精品| 免费在线看一区| 久久婷婷国产综合精品青草 | 妖精视频成人观看www| 欧美激情中文字幕乱码免费| 牛人盗摄一区二区三区视频| 蜜桃久久av一区| 久久亚洲影音av资源网| 久久麻豆一区二区| 可以看av的网站久久看| 久久香蕉国产线看观看网| 久久久综合网| 欧美成人免费在线观看| 欧美激情精品久久久久久| 欧美成人综合一区| 亚洲国产日韩综合一区| 亚洲精品乱码视频| 夜夜嗨av一区二区三区| 亚洲线精品一区二区三区八戒| 亚洲一级黄色片| 亚洲欧美日韩精品综合在线观看| 午夜精品福利在线观看| 香蕉乱码成人久久天堂爱免费| 久久精品一区二区三区中文字幕| 久久蜜桃资源一区二区老牛| 老司机精品久久| 欧美连裤袜在线视频| 国产精品久久久久久户外露出| 国产欧美短视频| 精品不卡在线| 夜夜嗨一区二区| 欧美在线播放一区| 免费国产一区二区| 亚洲伦伦在线| 性感少妇一区| 欧美成人午夜影院| 国产精品一区二区男女羞羞无遮挡 | 在线亚洲免费视频| 99国产精品| 欧美在线一二三| 欧美国产精品中文字幕| 日韩视频一区二区三区在线播放| 亚洲一区二区精品在线观看| 久久国产欧美精品| 欧美日韩123| 在线成人性视频| 亚洲一卡二卡三卡四卡五卡| 久久久久这里只有精品| 亚洲欧洲日本一区二区三区| 亚洲欧美一区二区三区极速播放| 久久久亚洲午夜电影| 欧美午夜片在线观看| 在线观看日韩精品| 欧美一区二粉嫩精品国产一线天| 欧美激情无毛| 性一交一乱一区二区洋洋av| 欧美手机在线| 日韩视频一区二区在线观看 | 日韩一级免费| 久久久久网址|