我有一個關於async()函數或任何其他方式來解決我的問題的問題。我向服務器發送指定類型的消息,並等待特定的 響應。 我有功能接收()等待服務器的響應。我在async()中調用這個函數。如何中止async()如果超時已過
示例代碼:
while (true) {
future_receive = std::async(std::launch::async, [&] {
receive();
});
do {
status = future_receive.wait_for(chrono::seconds(timeLimit));
if (status == std::future_status::timeout){
//if timeout, abort async() function
}
} while (status != std::future_status::ready);
}
什麼是我的問題嗎?在這種情況下,如果我得到「超時」,async()函數將起作用, 會等到某些事情發生,即使它永遠不會到來,並且在下一個週期中將再次調用,並且將創建新線程 。如何避免這種情況?
如何在「timeout」超時後中止async()。也許任何其他方式沒有async()來解決這個問題。我只想使用C++的標準庫?