在boost::asio
中,從this例子開始,是否可以在同一函數中等待處理程序?所以像這樣:C++:Boost :: asio:在同一函數中等待異步處理程序
void myFunc()
{
int time = 0;
socket_.async_handshake(boost::asio::ssl::stream_base::client,
boost::bind(&SSLClient::handle_handshake, this,
boost::asio::placeholders::error));
while(1)
{
//hypothetical condition that will become true when async_handshake has finished
if(handshake_finished)
{
//do something
break;
}
if(time > timeout)
{
socket_.cancel();
break;
}
sleep(1);
time++;
}
}
所以我想能夠使用異步調用,而不必編寫一個新的功能來做下一步。
爲什麼我需要這樣做?因爲我正在使用QThread,並且與新線程相關的所有內容都必須位於一個函數QThread::run()
中,並且在該函數結束時必須執行Qt的事件循環。
我不明白。你想同步使用異步調用? –
@LightnessRacesinOrbit也許這是一種陳述方式...我只需要在相同的功能發生的反應。 –
您可以使用lambda函數或協程。 – ForEveR