我正在研究一個小線程庫,並且遇到了問題。 boost :: condition_variable.wait()完美工作,但boost :: condition_variable.timed_wait()立即返回,它不會超時。boost :: condition_variable.timed_wait立即返回
該文檔說,它應該只在超時已過或已通知時返回。這是一個三秒鐘等待通知之前,我已經嘗試了10秒和100秒的時間,所以它應該在3秒後返回。
編輯:
boost::condition_variable waitCondition;
boost::mutex mMutex;
Message MessageClient::waitAsync(Message msg, bool waitForReply) {
unique_lock<boost::mutex> lock(msg->mMutex);
if(mSendTimeout.sec == 0)
msg->waitCondition.wait(lock);
else {
timeout = msg->waitCondition.timed_wait(lock, mSendTimeout);
if(!timeout)
return 0;
if(waitForReply) {
Message reply = receiveMessage();
return reply;
}
else
return 0;
}
這是一個的sendMessage後調用。接收器得到的消息,發送回覆,然後調用
waitCondition.notify_all();
夠用了,代碼加了 – dutt