• <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’不僅僅只限于網絡,這樣就變得簡單多了!


            久久A级毛片免费观看| 成人久久综合网| 亚洲精品无码久久久| 青青草国产97免久久费观看| 亚洲美日韩Av中文字幕无码久久久妻妇 | 午夜久久久久久禁播电影 | 国产精品久久久久天天影视| 久久精品国产福利国产秒| 亚洲精品97久久中文字幕无码| 国产成人无码精品久久久性色| 久久亚洲国产精品一区二区| 亚洲国产成人精品91久久久 | 国产高潮久久免费观看| 久久人人爽人人爽人人片AV不 | 国产精品美女久久久久久2018| 精品国产VA久久久久久久冰| 99久久久精品| 久久精品aⅴ无码中文字字幕不卡| 国产精品视频久久| 色偷偷久久一区二区三区| 久久99精品国产麻豆蜜芽| 久久精品国产亚洲77777| 久久久国产打桩机| 久久九色综合九色99伊人| 国产精品久久久久久久| 中文字幕热久久久久久久| 欧美性大战久久久久久| 97精品伊人久久久大香线蕉| www.久久99| 久久99精品久久久久婷婷| 久久久精品国产免大香伊| 97久久国产综合精品女不卡 | 久久久久久综合网天天| 久久亚洲电影| 精品久久久久久国产牛牛app| 久久福利青草精品资源站| AV色综合久久天堂AV色综合在| 欧美大香线蕉线伊人久久| 久久人人爽人人爽人人片AV不 | 99久久综合狠狠综合久久| 99久久久精品|