• <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.¢%

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

            JetByteTools(一)

            Posted on 2009-09-18 22:33 S.l.e!ep.¢% 閱讀(628) 評論(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’不僅僅只限于網(wǎng)絡(luò),這樣就變得簡單多了!


            狠狠色婷婷久久一区二区| 久久久久人妻一区精品色| 99久久精品免费看国产| 色综合合久久天天综合绕视看| 国产福利电影一区二区三区久久久久成人精品综合 | 久久午夜无码鲁丝片秋霞| 久久香综合精品久久伊人| 国产精品久久久久久福利漫画| 国产亚洲色婷婷久久99精品91 | 日本久久久久亚洲中字幕| 国产99久久久国产精品~~牛| 中文精品99久久国产 | 欧美日韩精品久久久久| 久久精品国产免费一区| 久久精品亚洲AV久久久无码| 久久九九亚洲精品| 伊人久久大香线蕉av不变影院| 人人狠狠综合久久亚洲88| 久久综合狠狠综合久久综合88| 国内精品伊人久久久久网站| 久久夜色精品国产欧美乱| 久久性生大片免费观看性| 色狠狠久久AV五月综合| 中文字幕无码av激情不卡久久| 日韩一区二区久久久久久| 久久99精品久久久久婷婷| 中文字幕热久久久久久久| 日韩十八禁一区二区久久| 香蕉久久夜色精品国产小说| 国内精品久久久久久99| 亚洲精品无码久久久久去q| 欧美一级久久久久久久大片| 久久电影网2021| 国产精品女同久久久久电影院| 伊人久久大香线蕉综合Av| 国内精品久久久久久久久电影网| 人妻精品久久久久中文字幕| 青青热久久国产久精品| 一级做a爰片久久毛片免费陪| 久久中文字幕精品| 久久久久久国产精品无码下载 |