1
我編制了boost :: ASIO例如: http://www.boost.org/doc/libs/1_46_1/doc/html/boost_asio/examples.html#boost_asio.examples.http_server_3的boost :: ASIO併發
它應該是一個多線程服務器實現。
現在,在async_read處理程序中,我打印一條消息並休眠30秒。我在兩個瀏覽器中打開localhost,看到handle_read被調用一次,然後30秒沒有任何反應,最後第二次調用handle_read。
用5個線程調用io_Service.run。
爲什麼處理程序不同時調用?例如爲什麼在調用第二個handle_read之前等待第一個handle_read?
向我們顯示您的代碼。我敢打賭,你不會註冊一個新的聽衆,直到睡眠之後。 –
您是否在睡眠之前從句柄中啓動了新的async_read()? – Olympian
是的,我在新的async_read之前放置睡眠。 http://www.boost.org/doc/libs/1_46_1/doc/html/boost_asio/example/http/server3/connection.cpp 基本上立即在if(!e)之後。 我認爲它的工作原理是,它可以按連接工作。所以我想處理客戶端1的數據,並且只在處理完成後才接收新數據。 但是,它正在處理客戶端1我也想處理客戶端2。 – thelamb