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

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

WaitForMultipleObjects用法探索

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

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

 

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

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

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

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

為了解決這一問題,可以采用雙WaitForMultipleObjects檢測機制來實現(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++);

                //同時檢測其他的事件

                while(nIndex < nCount)

                {

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

 

                    switch(dwRet)

                    {

                    case WAIT_TIMEOUT:

                        nIndex = nCount; //退出檢測,因為沒有被觸發(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>
            玖玖玖国产精品| 欧美国产先锋| 亚洲欧美日韩人成在线播放| 欧美私人网站| 欧美一区亚洲二区| 欧美一区成人| 1024亚洲| 亚洲日本电影在线| 欧美国产欧美亚洲国产日韩mv天天看完整 | 亚洲欧美三级伦理| 国产伦精品一区二区三区视频黑人| 欧美一区二区三区视频在线| 久久精品国产亚洲精品 | 欧美日本在线一区| 一本到12不卡视频在线dvd| 国产精品99久久久久久有的能看| 国产精品乱码| 蜜桃av久久久亚洲精品| 欧美成人在线网站| 亚洲网站视频| 欧美一区免费| 日韩一级欧洲| 欧美亚洲视频| 亚洲免费观看高清在线观看| 亚洲私人影吧| 一区在线免费| 中国av一区| 亚洲国产精品成人一区二区| 一本色道综合亚洲| 在线观看av不卡| 中国成人在线视频| 在线精品亚洲| 亚洲天堂av综合网| 在线视频国内自拍亚洲视频| 9l国产精品久久久久麻豆| 国内成人自拍视频| 亚洲最新视频在线| 亚洲国产精品va在线看黑人| 亚洲免费一在线| 日韩网站免费观看| 久久久久国产精品午夜一区| 夜夜嗨av一区二区三区中文字幕| 久久福利资源站| 午夜在线精品偷拍| 欧美黄色一级视频| 久久久久久伊人| 国产免费亚洲高清| 亚洲乱码日产精品bd| 在线高清一区| 久久精品国产99| 欧美在线free| 国产精品久久久久国产a级| 亚洲福利国产精品| 亚洲第一页自拍| 欧美一区二区高清在线观看| 亚洲天堂久久| 欧美激情一区二区| 欧美激情久久久久久| 狠狠色噜噜狠狠色综合久 | 亚洲国产成人精品女人久久久 | 亚洲视频欧洲视频| 欧美不卡视频| 欧美高清在线| 亚洲人成人99网站| 欧美aⅴ一区二区三区视频| 女人天堂亚洲aⅴ在线观看| 国产有码在线一区二区视频| 亚洲一区二区三区精品在线观看| 亚洲视频图片小说| 欧美三级在线视频| 国产精品99久久久久久久久久久久| 一本一本久久| 欧美视频不卡中文| 亚洲一区二区在| 久久不射中文字幕| 国产一区二区久久| 久久精品首页| 亚洲第一综合天堂另类专| 亚洲日本在线观看| 欧美电影在线观看完整版| 亚洲人成人99网站| 国产精品99久久久久久有的能看| 国产精品国产福利国产秒拍| 亚洲一区二区在线看| 久久久精品国产免费观看同学| 国产小视频国产精品| 久久久国产一区二区三区| 欧美r片在线| 这里只有精品在线播放| 国产精品成人免费精品自在线观看| 亚洲天堂av在线免费观看| 久久激情五月丁香伊人| 亚洲福利视频免费观看| 欧美日韩伦理在线| 午夜亚洲视频| 亚洲第一色在线| 亚洲欧美高清| 伊人婷婷欧美激情| 欧美人与禽猛交乱配| 亚洲欧美久久久| 欧美激情第五页| 亚洲一区自拍| 有码中文亚洲精品| 国产精品高潮久久| 久久久夜夜夜| 一道本一区二区| 欧美aa国产视频| 亚洲综合导航| 亚洲国产成人久久| 国产酒店精品激情| 六十路精品视频| 亚洲欧美美女| 亚洲精品中文字| 老巨人导航500精品| 亚洲一区二区不卡免费| 在线色欧美三级视频| 欧美午夜精品久久久久久久| 久久婷婷综合激情| 亚洲永久在线| 亚洲人成77777在线观看网| 久久久人成影片一区二区三区| 一区二区三区四区五区精品| 亚洲国产成人不卡| 国产香蕉97碰碰久久人人| 欧美日韩一区二区在线观看视频 | 免费欧美在线| 欧美一区二区三区另类| 这里只有精品视频| 亚洲精品护士| 亚洲高清自拍| 免费观看国产成人| 久久精品国产亚洲精品| 亚洲欧美一区二区三区在线| 亚洲最新色图| 亚洲人成艺术| 亚洲日本激情| 亚洲国产精品福利| 在线国产日韩| 精品二区久久| 亚洲第一福利在线观看| 国产综合激情| 国产在线不卡| 国产一区二区日韩精品| 国产欧美日韩不卡| 国产精品无人区| 国产女人aaa级久久久级| 国产精品一区二区a| 国产精品私房写真福利视频| 国产精品久久久久久久第一福利| 欧美日韩一区自拍| 欧美日韩在线免费观看| 国产精品www994| 国产精品美女午夜av| 国产欧美日韩精品丝袜高跟鞋| 国产精品视频最多的网站| 国产精品自在线| 国产精品视频男人的天堂| 国产精品爽黄69| 国产一区成人| 在线日韩欧美视频| 日韩一级精品| 性色一区二区三区| 欧美中文在线免费| 欧美成人精品在线视频| 亚洲激情视频| 中文精品在线| 欧美一区二区视频网站| 久久青青草综合| 欧美日韩美女在线观看| 国产精品亚洲欧美| 亚洲电影自拍| 亚洲网友自拍| 久久综合网hezyo| 亚洲国产日韩在线一区模特| 一本久久知道综合久久| 久久激情中文| 欧美精品色一区二区三区| 国产精品视频yy9099| 亚洲第一区中文99精品| 亚洲一区激情| 玖玖综合伊人| 99精品热6080yy久久| 欧美在线视频在线播放完整版免费观看| 美女网站在线免费欧美精品| 欧美四级电影网站| 亚洲大片在线观看| 午夜精品理论片| 亚洲福利专区| 亚洲欧美国产毛片在线| 免费亚洲一区二区| 国产乱码精品一区二区三| 亚洲精品一区二区三区四区高清| 欧美一进一出视频| 亚洲国产欧美国产综合一区| 亚洲欧美日韩一区在线观看| 欧美承认网站| 国产亚洲精品aa| 亚洲伊人伊色伊影伊综合网| 欧美黄色网络| 久久精品最新地址|