• <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.¢% 閱讀(637) 評論(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’不僅僅只限于網絡,這樣就變得簡單多了!


            久久精品国产精品亚洲精品 | 伊人久久大香线蕉影院95| 久久久久久狠狠丁香| 久久久国产亚洲精品| 久久亚洲av无码精品浪潮| 亚洲精品午夜国产va久久| 亚洲AV无码一区东京热久久 | 国色天香久久久久久久小说| 久久精品桃花综合| 一本色道久久88—综合亚洲精品| 日产精品久久久久久久性色| 久久99精品久久久久久| 久久精品国产亚洲AV不卡| 午夜不卡久久精品无码免费| 欧美亚洲另类久久综合| 97精品伊人久久大香线蕉| 久久综合中文字幕| 久久久无码人妻精品无码| 蜜桃麻豆www久久国产精品| 国内精品久久久人妻中文字幕| 久久久精品视频免费观看| 人妻精品久久久久中文字幕69 | 久久国产亚洲精品麻豆| 亚洲精品国产第一综合99久久| 亚洲国产精品无码久久| 深夜久久AAAAA级毛片免费看 | AV色综合久久天堂AV色综合在 | 久久久久久久久无码精品亚洲日韩 | 99国产精品久久| 亚洲人成电影网站久久| 99久久精品费精品国产| 久久综合狠狠综合久久综合88| 久久久精品人妻无码专区不卡| 久久99国产精品久久| 人人狠狠综合久久88成人| 久久久久久一区国产精品| Xx性欧美肥妇精品久久久久久| 久久精品中文闷骚内射| 亚洲国产精品久久电影欧美| 久久精品免费一区二区| 久久婷婷色香五月综合激情|