C++ boost::条件变量。定时等待立即返回

C++ boost::条件变量。定时等待立即返回,c++,boost-thread,C++,Boost Thread,我正在开发一个小线程库,遇到了一个问题。boost::condition\u variable.wait工作正常,但是boost::condition\u variable.timed\u wait会立即返回,不会超时 文档中说,它应该只在超时时间过去或收到通知后返回。在通知之前需要等待3秒钟,我已经尝试了10秒和100秒两种超时,所以它应该在3秒钟后返回 编辑: 条件变量等待可以。因此,必须在循环中使用它们: while (someCondition) msg->waitCondit

我正在开发一个小线程库,遇到了一个问题。boost::condition\u variable.wait工作正常,但是boost::condition\u variable.timed\u wait会立即返回,不会超时

文档中说,它应该只在超时时间过去或收到通知后返回。在通知之前需要等待3秒钟,我已经尝试了10秒和100秒两种超时,所以它应该在3秒钟后返回

编辑:


条件变量等待可以。因此,必须在循环中使用它们:

while (someCondition)
  msg->waitCondition.wait(lock);
使用timed_wait时,它稍微复杂一些,因为您必须重新计算超时时间,以处理它实际等待的时间。Boost提供了在给定绝对超时的情况下为您执行循环的功能:

msg->waitCondition.timed_wait(lock, absoluteTimeout, boost::lambda::var(someFlag));

如果您仍然有问题,请检查MSNeTimeExt不是负的或非常小的,并且考虑使用绝对超时。

< P>条件变量等待可以。因此,必须在循环中使用它们:

while (someCondition)
  msg->waitCondition.wait(lock);
使用timed_wait时,它稍微复杂一些,因为您必须重新计算超时时间,以处理它实际等待的时间。Boost提供了在给定绝对超时的情况下为您执行循环的功能:

msg->waitCondition.timed_wait(lock, absoluteTimeout, boost::lambda::var(someFlag));

如果您仍然有问题,请检查MSMENTIMEOUT不是否定的或非常小的,并考虑使用绝对超时。< /P>啊,谢谢。我来试试看。mSendTimeout是我检查过的,其中的一个变量是错误的,但修复它并不能使它工作。啊,谢谢。我来试试看。mSendTimeout是我检查过的,其中的一个变量是错误的,但修复它并不能使它工作。