fix recv_with_timeout

This commit is contained in:
Xuan Son Nguyen 2025-01-22 10:44:23 +01:00
parent f4dab52a24
commit 08296ec74d

View file

@ -1642,10 +1642,6 @@ struct server_response {
server_task_result_ptr recv_with_timeout(const std::unordered_set<int> & id_tasks, int timeout) { server_task_result_ptr recv_with_timeout(const std::unordered_set<int> & id_tasks, int timeout) {
while (true) { while (true) {
std::unique_lock<std::mutex> lock(mutex_results); std::unique_lock<std::mutex> lock(mutex_results);
std::cv_status cr_res = condition_results.wait_for(lock, std::chrono::seconds(timeout));
if (cr_res == std::cv_status::timeout) {
return nullptr;
}
for (int i = 0; i < (int) queue_results.size(); i++) { for (int i = 0; i < (int) queue_results.size(); i++) {
if (id_tasks.find(queue_results[i]->id) != id_tasks.end()) { if (id_tasks.find(queue_results[i]->id) != id_tasks.end()) {
@ -1654,6 +1650,11 @@ struct server_response {
return res; return res;
} }
} }
std::cv_status cr_res = condition_results.wait_for(lock, std::chrono::seconds(timeout));
if (cr_res == std::cv_status::timeout) {
return nullptr;
}
} }
// should never reach here // should never reach here