У меня проблема с бустом, у меня есть две переменные экземпляра в классе cpp:
boost::condition wait_answer_condition;
boost::mutex wait_answer_mutex;
тогда у меня есть метод, который отправляет сообщение и при условии:
method1
boost::unique_lock<boost::mutex> lock(wait_answer_mutex)
//do some work and send message
//wait the result
wait_answer_condition.wait(lk);
//get the result
result = responseIdSyncMap[currentRequestID];
тогда у меня есть другой метод, который получает результат и пробуждает поток отправителя
method2
int requestID = responseData->getInt32Value("response_id");
responseIdSyncMap.insert(make_pair(requestID, responseData));
wait_answer_condition.notify_one();
оба метода вызываются в разных потоках. Проблема состоит в том, что когда вызывается метод2, wait_answer_condition освобождается перед вызовом wait_answer_condition.notify_one (), а метод1 просыпается, не найдя результата.
У кого-нибудь есть идеи по этому поводу?