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

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

WaitForMultipleObjects用法探索

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

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

 

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

問題就在這里,我們?nèi)绾慰梢垣@取所有被同時(shí)觸發(fā)的內(nèi)核對象。舉個(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)核對象被觸發(fā)時(shí),WaitForMultipleObjects選擇其中序號最小的返回。而WaitForMultipleObjects它只會(huì)改變使它返回的那個(gè)內(nèi)核對象的狀態(tài)。

這兒又會(huì)產(chǎn)生一個(gè)問題,如果序號最小的那個(gè)對象頻繁被觸發(fā),那么序號比它大的內(nèi)核對象將得不到被處理的機(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ā)的對象了.

                        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用法探索  回復(fù)  更多評論   

解決辦法真巧妙,支持!
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成人手机在线| 一本高清dvd不卡在线观看| 国产在线拍偷自揄拍精品| 亚洲精品一区在线观看香蕉| 精品成人一区二区三区| 亚洲一区在线直播| 亚洲另类一区二区| 久久综合伊人77777蜜臀| 久久精品国产亚洲a| 国产精品久久久久久久午夜片| 欧美激情综合色| 在线电影一区| 欧美在线视频a| 欧美中文字幕视频| 国产精品女主播| 国产精品99久久久久久人| 夜夜夜久久久| 欧美日韩你懂的| 亚洲精品一线二线三线无人区| 亚洲精选91| 欧美金8天国| 亚洲精品一二区| 亚洲天堂免费观看| 欧美午夜无遮挡| 亚洲午夜91| 亚洲欧美视频一区| 国产欧美亚洲精品| 欧美亚洲一区| 国产精品一区二区久久精品| 亚洲在线免费视频| 久久综合五月天婷婷伊人| 亚洲综合欧美| 欧美激情91| 麻豆成人91精品二区三区| 欧美性大战久久久久久久| 久久亚洲综合色| 国产精品成av人在线视午夜片| 亚洲激情社区| 欧美一区二区三区在线免费观看| 久久久久久一区| 亚洲国产精品一区| 欧美喷潮久久久xxxxx| av成人免费| 久久精品一区二区三区四区| 狠狠色狠色综合曰曰| 欧美成人精品激情在线观看| 亚洲日本精品国产第一区| 亚洲午夜精品| 国产欧美另类| 欧美成人午夜剧场免费观看| 亚洲精品日韩欧美| 羞羞漫画18久久大片| 伊人久久男人天堂| 欧美日韩黄色一区二区| 亚洲一区黄色| 欧美激情自拍| 久久爱www久久做| 亚洲国产精品高清久久久| 欧美日韩视频免费播放| 欧美一区二区三区四区视频| 亚洲电影av在线| 午夜在线精品| 亚洲美女av网站| 国产亚洲欧美另类中文| 免费看成人av| 性欧美xxxx视频在线观看| 亚洲国产精品久久久久婷婷884| 亚洲欧美三级在线| 亚洲精品日韩一| 国产午夜精品理论片a级大结局| 欧美激情1区2区3区| 久久成人综合视频| 亚洲视频日本| 亚洲国产精品一区二区第四页av | 亚洲高清视频中文字幕| 香蕉精品999视频一区二区| 亚洲高清中文字幕| 国产美女诱惑一区二区| 欧美日韩二区三区| 久久免费99精品久久久久久| 亚洲永久免费av| 亚洲精品在线视频| 欧美激情视频一区二区三区在线播放 | 亚洲欧美日韩国产中文| 亚洲日本中文字幕免费在线不卡| 国产三级欧美三级日产三级99| 欧美成人黑人xx视频免费观看| 在线亚洲成人| 欧美日韩国产小视频| 亚洲午夜电影网| 免费在线观看成人av| 亚洲精选成人| 国产精品一卡二| 久久亚洲春色中文字幕| 日韩视频精品在线观看| 久久大综合网| 91久久精品日日躁夜夜躁国产| 欧美精品尤物在线| 亚洲欧美日韩国产中文| 国产精品99久久久久久有的能看| 国产视频观看一区| 国产偷国产偷亚洲高清97cao| 国产精品色网| 国产欧美日韩高清| 国产精品视频精品| 国产精品高潮视频| 国产精品成人免费| 国产精品视频成人| 国产伦精品一区二区三区高清版| 国产精品久久久久9999吃药| 国产精品久久久久久av福利软件 | 国产一区二区三区av电影| 国产欧美日韩亚洲一区二区三区| 国产精品一区二区三区四区五区| 国产精品丝袜白浆摸在线| 欧美色欧美亚洲另类二区| 国产精品久久久免费| 国产精品欧美一区喷水| 国产日韩欧美在线一区| 韩国欧美一区| 亚洲国产精品一区制服丝袜 | 一区二区三区欧美在线观看| 在线视频日本亚洲性| 午夜精品久久久久久久久| 久久精品最新地址| 欧美大片免费看| 亚洲精品美女在线观看| 亚洲性图久久| 久久精品动漫| 欧美精品一区二区三区四区| 国产精品高潮呻吟久久av黑人| 国产亚洲aⅴaaaaaa毛片| 亚洲高清视频的网址| 99精品免费视频| 欧美一区二区三区四区高清| 免费亚洲电影| 亚洲免费激情| 午夜在线a亚洲v天堂网2018| 女仆av观看一区| 国产精品成人一区二区| 国产一区二区视频在线观看| 亚洲精品视频在线看| 性色一区二区三区| 欧美激情视频免费观看| 亚洲一区在线观看视频 | 国产精品久久久免费| 在线看一区二区| 亚洲伊人观看| 欧美成人日本| 午夜精品视频在线观看一区二区| 米奇777在线欧美播放| 国产精品乱码一区二区三区 | 日韩视频免费在线观看| 午夜一区二区三视频在线观看 | 欧美电影在线| 国产亚洲精品bt天堂精选| 免费在线成人av| 久久久欧美精品sm网站| 女同性一区二区三区人了人一 | 亚洲一区国产精品| 午夜精品福利视频| 久久国产精品99久久久久久老狼| 久久精品国产96久久久香蕉| 久久免费视频在线观看| 六月婷婷一区| 欧美精品aa| 国产精品网站一区| 狠狠干狠狠久久| 欧美高清视频免费观看| 国产专区一区| 欧美专区在线| 一区二区久久久久| 欧美精品网站| 亚洲国产毛片完整版| 久久夜色精品国产欧美乱| 亚洲欧美综合精品久久成人| 欧美日韩视频第一区| 日韩视频一区二区三区在线播放免费观看| 久久精品一本久久99精品| 亚洲综合国产精品| 国产精品午夜电影| 亚洲伊人网站| aa级大片欧美三级| 欧美日韩国产va另类| 亚洲每日在线| 日韩视频一区二区三区在线播放免费观看 | 久久蜜桃资源一区二区老牛 | 亚洲日本无吗高清不卡| 欧美华人在线视频| 蜜臀av在线播放一区二区三区| 激情成人在线视频| 久久综合精品一区| 久久日韩精品| 亚洲高清网站| 亚洲成色精品| 欧美激情视频一区二区三区在线播放| 亚洲第一福利视频| 亚洲电影激情视频网站| 欧美激情视频免费观看|