休息时间事件

时间:2016-07-07 09:38:58

标签: c++

我需要帮助。 我正在编写以下代码:

std::chrono::system_clock::time_point end_time =
  std::chrono::system_clock::now() + std::chrono::seconds(T);

while( end_time > std::chrono::system_clock::now() ){
  pthread_cond_wait(&dcond_var, &mutex);
  //do work
}

所以我需要一个控制循环并持续一段时间,我需要控制循环内的操作由条件变量同步。问题是条件变量的等待有时会使控制循环持续超过所需的T秒。 有没有一种方法可以在T秒后打破,即使系统正在等待pthread_cond_wait?

1 个答案:

答案 0 :(得分:1)

您可以使用pthread_cond_timedwait之类的函数或其他可以设置超时的互斥函数。超时时间为end_time - now。如果pthread_cond_timedwait返回ETIMEDOUT,则表示超时已过,您无需执行此操作。