Skip to content

Commit 6cccad2

Browse files
committed
fix
1 parent f9c292e commit 6cccad2

File tree

1 file changed

+10
-10
lines changed

1 file changed

+10
-10
lines changed

examples/server/server.cpp

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1695,6 +1695,11 @@ struct server_response {
16951695
// This function blocks the thread until there is a response for one of the id_tasks
16961696
server_task_result_ptr recv(const std::unordered_set<int> & id_tasks) {
16971697
while (true) {
1698+
std::unique_lock<std::mutex> lock(mutex_results);
1699+
condition_results.wait(lock, [&]{
1700+
return queue_results.cbegin() != queue_results.cend();
1701+
});
1702+
16981703
for (const auto & id_task : id_tasks) {
16991704
auto iter = queue_results.find(id_task);
17001705
if (iter != queue_results.cend()) {
@@ -1703,11 +1708,6 @@ struct server_response {
17031708
return res;
17041709
}
17051710
}
1706-
1707-
std::unique_lock<std::mutex> lock(mutex_results);
1708-
condition_results.wait(lock, [&]{
1709-
return queue_results.cbegin() != queue_results.cend();
1710-
});
17111711
}
17121712

17131713
// should never reach here
@@ -1739,17 +1739,17 @@ struct server_response {
17391739
// single-task version of recv()
17401740
server_task_result_ptr recv(int id_task) {
17411741
while (true) {
1742+
std::unique_lock<std::mutex> lock(mutex_results);
1743+
condition_results.wait(lock, [&]{
1744+
return queue_results.cbegin() != queue_results.cend();
1745+
});
1746+
17421747
auto iter = queue_results.find(id_task);
17431748
if (iter != queue_results.cend()) {
17441749
server_task_result_ptr res = iter->second;
17451750
queue_results.erase(id_task);
17461751
return res;
17471752
}
1748-
1749-
std::unique_lock<std::mutex> lock(mutex_results);
1750-
condition_results.wait(lock, [&]{
1751-
return queue_results.cbegin() != queue_results.cend();
1752-
});
17531753
}
17541754
}
17551755

0 commit comments

Comments
 (0)