這是我的服務器代碼:升壓async_read_some不完全異步
socket_.async_read_some(boost::asio::buffer(data_read.data(), Message::header_length),
boost::bind(&TcpConnection::handle_read_header, shared_from_this(),
boost::asio::placeholders::error));
如果我在「handle_read_header」功能的循環
boost::thread::sleep(boost::posix_time::seconds(2));
它是由被稱爲寫了下面的代碼在'async_read_some'之上,整個線程正在等待直到睡眠結束。所以當另一個請求進來時,它不會被處理,直到睡眠結束。是不是假設異步處理每個請求?我是新的提升和C++。如果我提到有任何問題,請告訴我。
其實,即使「睡覺」Boost :: asio仍然會繼續異步讀取。只是,如果一個處理程序正在運行並且只使用一個線程,則Asio無法通知您有關讀取的完成情況。你會如何預期它的行爲? – ereOn
@ereOn你是說我在'handle_read_header'內調用的方法應該在一個不同的線程中?和ereOn不是async_read_some爲每個處理程序創建新線程? – Navin
@ereOn如果我在線程完成套接字的時候調用處理程序中的線程,則新請求可能已更改。 – Navin