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


            欧美久久久久久精选9999| 欧美一级久久久久久久大片| 久久伊人五月丁香狠狠色| 久久综合五月丁香久久激情| 久久久久波多野结衣高潮| 狠狠色丁香久久婷婷综合五月| 久久91精品国产91久久户| 久久九九久精品国产| 少妇久久久久久久久久| 中文字幕亚洲综合久久| 伊人久久五月天| 99久久精品九九亚洲精品| 国产aⅴ激情无码久久| 97超级碰碰碰碰久久久久| 久久婷婷色综合一区二区| 久久99精品国产99久久6男男| 性做久久久久久久久浪潮| 国产91色综合久久免费分享| 日韩欧美亚洲国产精品字幕久久久| 色欲久久久天天天综合网精品 | 久久久久亚洲精品无码网址| 久久婷婷色综合一区二区| 久久精品成人免费国产片小草| 少妇精品久久久一区二区三区| 久久国产高清一区二区三区| 国产69精品久久久久777| 人妻丰满AV无码久久不卡 | 国产精品久久久久久久人人看| 久久精品国产免费一区| 久久久久亚洲精品天堂久久久久久 | 狠狠色婷婷久久一区二区| 久久久噜噜噜www成人网| 久久影院亚洲一区| 久久国产成人亚洲精品影院| 青青青国产精品国产精品久久久久 | 国产精品久久国产精品99盘| 久久人做人爽一区二区三区| 无码人妻久久一区二区三区蜜桃| 久久天天躁狠狠躁夜夜2020| 国产午夜精品久久久久九九| 久久久精品久久久久久|