• <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>

            S.l.e!ep.¢%

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

            IOCP Tips

            Posted on 2009-02-11 08:58 S.l.e!ep.¢% 閱讀(185) 評論(0)  編輯 收藏 引用 所屬分類: VC

            IOCP Tips

            Posted on 2008-03-12 11:51 小明 閱讀(2913) 評論(7) ?編輯?收藏引用 所屬分類: Win32Network/ACE

            Tip 1 : 使用WSASend/WSARecv來收發數據,而不是使用ReadFile/WriteFile
            一句話,前者具有更好的性能

            Tip 2:? 理解IOCP的最大并發線程數和工作線程數
            應該讓工作線程數(調用GetQueuedCompletionStatus那些線程)大于等于在CreateIoCompletionPort 指定的NumberOfConcurrentThreads數。
            標準做法是永遠設置NumberOfConcurrentThreads=0

            Tip 3: 利用GetQueuedCompletionStatus的completion key和overlapped structure參數在異步操作中來傳遞信息
            通常completion key用來傳遞和handle/socket/session的信息
            而overlapped structure用來傳遞每次異步I/O的一些信息,通常的做法是會定義一個structure來派生于OVERLAPPED
            struct MY_IO_DATA : public OVERLAPPED

            Tip 4: 理解IOCP的完成包的排隊行為
            從GetQueuedCompletionStatus得到完成包的次序可能跟調用WSASend/WSARecv的次序不一樣。
            微軟唯一保證是如果調用WSASend/WSARecv得到SUCCESS或者IO_PENDING,就一定會有一個完成包出現在IOCP的隊列上,不管這個socket是否關閉了。
            如果關閉socket,那么之后的WSASend/WSARecv調用就一定返回失敗的結果。

            關于IOCP包可能次序錯亂和解決方法,有一篇文章可以參考: http://www.codeproject.com/KB/IP/reusablesocketserver4.aspx
            我的做法是避免多次調用WSARecv


            Tip 5: IOCP的清除
            最重要的一點是,在I/O完成之前,不要釋放overlapped structure。可以用HasOverlappedIoCompleted來監測OV是否完成。

            通常的做法是
            1) 調用PostQueueCompletionStatus N次(N=工作線程數),來傳遞特殊的退出信息給所有的工作線程
            2) 關閉所有的socket,如果很在意處理完未完成的數據包,需要使用一個計數器來跟蹤異步I/O事件,直到計數器為0,才關閉相應的socket
            3) 關閉completion port

            77777亚洲午夜久久多喷| 2020最新久久久视精品爱| 日韩va亚洲va欧美va久久| 伊人久久大香线蕉影院95| 国产精品嫩草影院久久| 久久受www免费人成_看片中文 | 97久久国产亚洲精品超碰热| 国产精品美女久久久久网| 久久久网中文字幕| 久久久av波多野一区二区| 久久WWW免费人成—看片| 亚洲va久久久噜噜噜久久男同| 久久国产高清字幕中文| 99久久夜色精品国产网站| 国产99久久久国产精品~~牛| 久久www免费人成看片| 久久99亚洲综合精品首页| 奇米综合四色77777久久| 色偷偷88欧美精品久久久| 国产一久久香蕉国产线看观看| 综合久久久久久中文字幕亚洲国产国产综合一区首| 麻豆精品久久久久久久99蜜桃| 久久中文娱乐网| 亚洲成色WWW久久网站| 久久精品国产99国产精品亚洲| 国产精品热久久无码av| 久久91精品久久91综合| 浪潮AV色综合久久天堂| 久久久久久久精品妇女99| 久久久久久国产精品免费免费| 日本精品久久久久中文字幕| 99久久久精品免费观看国产| 无码精品久久久天天影视| 久久久久久久精品成人热色戒| 国产精品久久新婚兰兰| 久久久久国产精品嫩草影院| 一本久久a久久精品综合香蕉| 久久亚洲中文字幕精品一区四| 激情综合色综合久久综合| 久久久精品国产亚洲成人满18免费网站 | 精品久久人人做人人爽综合|