【发布时间】:2012-03-27 07:44:19
【问题描述】:
我正在尝试使用来自 boost 的timed_wait。现在我其实不太清楚该怎么做。
整个事情的目的是确定它的状态。在下面的代码中调用了函数getStatus()。这个函数是异步的,如果一切正常,它会调用一个特定的回调函数来指示一切正常。如果它没有及时调用回调(所以发生超时)我知道出了点问题。
下面是示例代码:
void myClass::checkStatus()
{
boost::mutex::scoped_lock lock(m_Mutex);
boost::condition_variable cond;
while(true)
{
getStatus(); // Async Call to get the actual status
if(!cond.timed_wait(lock,boost::posix_time::milliseconds(3000),/* Callback */))
{
// Timeout
}
else
{
// OK
}
}
}
bool myClass::myCallback()
{
/* ... */
}
所以,如您所见,我不知道如何适当地将回调“添加”到我的 timed_wait。实际上我并没有真正了解它是如何工作的,因为我希望我的回调是从我的异步线程而不是从 timed_wait 本身调用的? (异步线程需要表明一切顺利)
我也查看了Boost Documentation,但它帮不了我更多。
关于第二个问题:我在这个例子中的互斥锁是否总是被锁定..?
【问题讨论】:
标签: c++ boost boost-thread