[源]關於 boost::asio::io_service::run() 出現【句柄無效】的問題php
首先, 我編寫了一個網絡應用庫net.lib,其中有一個單體(其有一成員 boost::asio::io_service),
當使用該net.lib時,可直接經過該單體獲取 io_service.
可是當 進行run() 時去出現了 【句柄無效】的狀況。
經過跟蹤, 發如今編譯生成net.lib 時, 沒有使用 BOOST_ASIO_HAS_IOCP 宏,致使net.lib 以 task_io_service 實現了,可是將net.lib 放到windows 機器上供客戶使用時, 客戶代碼卻以 win_iocp_io_service 方式去使用,可是net.lib實現卻並不是 win_iocp_io_service實現, 在run() 時, BOOL ok = ::GetQueuedCompletionStatus(iocp_.handle, &bytes_transferred,
&completion_key, &overlapped, block ? gqcs_timeout_ : 0);
DWORD last_error = ::GetLastError();
iocp_.handle 天然是相似 0xcdcdcd00 此般非法句柄咯windows