• <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++博客 :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理

            JetByteTools(一)

            Posted on 2009-09-18 22:33 S.l.e!ep.¢% 閱讀(633) 評論(0)  編輯 收藏 引用 所屬分類: IOCP

            ICOP可以這么簡單?

            class ?CIOCompletionPort
            {
            public :
            ????
            explicit ?CIOCompletionPort(size_t?maxConcurrency);
            ????
            ~ CIOCompletionPort();

            ????
            void ?AssociateDevice(HANDLE?hDevice,?ULONG_PTR?completionKey);

            ????
            void ?PostStatus(ULONG_PTR?completionKey,?DWORD?dwNumBytes? = ? 0 ,?OVERLAPPED? * pOverlapped? = ? 0 );

            ????
            void ?GetStatus(ULONG_PTR? * pCompletionKey,?PDWORD?pdwNumBytes,?OVERLAPPED? ** ppOverlapped);

            ????
            bool ?GetStatus(ULONG_PTR? * pCompletionKey,?PDWORD?pdwNumBytes,?OVERLAPPED? ** ppOverlapped,?DWORD?dwMilliseconds);

            private :
            ?HANDLE?m_iocp;

            ????
            // ?No?copies?do?not?implement
            ????CIOCompletionPort( const ?CIOCompletionPort? & rhs);
            ????CIOCompletionPort?
            & operator = ( const ?CIOCompletionPort? & rhs);
            }
            ;

            ?


            CIOCompletionPort::CIOCompletionPort(
            ???size_t?maxConcurrency)
            ???:??m_iocp(::CreateIoCompletionPort(INVALID_HANDLE_VALUE,?NULL,?
            0 ,?maxConcurrency))
            {
            ???
            if ?(m_iocp? == ? 0 )
            ???
            {
            ??????
            throw ?CWin32Exception(_T( " CIOCompletionPort::CIOCompletionPort()?-?CreateIoCompletionPort " ),?::GetLastError());
            ???}

            }


            CIOCompletionPort::
            ~ CIOCompletionPort()?
            {?
            ???::CloseHandle(m_iocp);
            }


            void ?CIOCompletionPort::AssociateDevice(
            ???HANDLE?hDevice,?
            ???ULONG_PTR?completionKey)?
            {
            ???
            if ?(m_iocp? != ?::CreateIoCompletionPort(hDevice,?m_iocp,?completionKey,? 0 ))
            ???
            {
            ??????
            throw ?CWin32Exception(_T( " CIOCompletionPort::AssociateDevice()?-?CreateIoCompletionPort " ),?::GetLastError());
            ???}

            }


            void ?CIOCompletionPort::PostStatus(
            ???ULONG_PTR?completionKey,?
            ???DWORD?dwNumBytes?
            /* ?=?0? */ ,?
            ???OVERLAPPED?
            * pOverlapped? /* ?=?0? */ )?
            {
            ???
            if ?( 0 ? == ?::PostQueuedCompletionStatus(m_iocp,?dwNumBytes,?completionKey,?pOverlapped))
            ???
            {
            ??????
            throw ?CWin32Exception(_T( " CIOCompletionPort::PostStatus()?-?PostQueuedCompletionStatus " ),?::GetLastError());
            ???}

            }


            void ?CIOCompletionPort::GetStatus(
            ???ULONG_PTR?
            * pCompletionKey,?
            ???PDWORD?pdwNumBytes,
            ???OVERLAPPED?
            ** ppOverlapped)
            {
            ???
            if ?( 0 ? == ?::GetQueuedCompletionStatus(m_iocp,?pdwNumBytes,?pCompletionKey,?ppOverlapped,?INFINITE))
            ???
            {
            ??????
            throw ?CWin32Exception(_T( " CIOCompletionPort::GetStatus()?-?GetQueuedCompletionStatus " ),?::GetLastError());
            ???}

            }


            bool ?CIOCompletionPort::GetStatus(
            ???ULONG_PTR?
            * pCompletionKey,?
            ???PDWORD?pdwNumBytes,
            ???OVERLAPPED?
            ** ppOverlapped,?
            ???DWORD?dwMilliseconds)
            {
            ???
            bool ?ok? = ? true ;

            ???
            if ?( 0 ? == ?::GetQueuedCompletionStatus(m_iocp,?pdwNumBytes,?pCompletionKey,?ppOverlapped,?dwMilliseconds))
            ???
            {
            ??????DWORD?lastError?
            = ?::GetLastError();

            ??????
            if ?(lastError? != ?WAIT_TIMEOUT)
            ??????
            {
            ?????????
            throw ?CWin32Exception(_T( " CIOCompletionPort::GetStatus()?-?GetQueuedCompletionStatus " ),?lastError);
            ??????}


            ??????ok?
            = ? false ;
            ???}


            ???
            return ?ok;
            }

            SURE,IOCP 在WINDOWS下是一種機制,一種高效的IO訪問機制,‘IO’不僅僅只限于網絡,這樣就變得簡單多了!


            久久国产免费直播| 国产精品免费看久久久香蕉 | 精品视频久久久久| 久久久久久亚洲精品不卡| 久久久人妻精品无码一区| 老男人久久青草av高清| 国产精品禁18久久久夂久| 国产精品欧美久久久久无广告| 中文字幕久久亚洲一区| 国产精品美女久久久久网| 久久人人超碰精品CAOPOREN| 无码国内精品久久人妻蜜桃| 国产午夜电影久久| …久久精品99久久香蕉国产| 三级韩国一区久久二区综合 | 天天爽天天狠久久久综合麻豆 | 久久精品国产亚洲αv忘忧草| 久久亚洲精品中文字幕三区| 精品久久久无码21p发布| 丁香久久婷婷国产午夜视频| 成人国内精品久久久久一区| 亚洲精品WWW久久久久久| 色综合久久天天综合| 久久久久国产精品熟女影院 | 精品久久久久久无码人妻蜜桃| 精品久久久久久国产| 中文字幕无码久久久| 久久国产V一级毛多内射| 精品国产一区二区三区久久| 人妻精品久久久久中文字幕69| 久久精品综合网| 伊人久久亚洲综合影院| 久久久久久久综合综合狠狠| 狠狠色伊人久久精品综合网 | 国产女人aaa级久久久级| 91精品国产乱码久久久久久| 久久久精品国产sm调教网站| 久久久久久精品免费看SSS | 94久久国产乱子伦精品免费| 久久亚洲精品中文字幕三区| 国内精品久久久久久久久电影网|