【问题标题】:Break while time events休息时间事件
【发布时间】:2016-07-07 09:38:58
【问题描述】:

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

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 秒。 即使系统正在等待 pthread_cond_wait,是否有一种方法可以在恰好 T 秒后中断 while?

【问题讨论】:

标签: c++


【解决方案1】:

您可以使用pthread_cond_timedwait 之类的函数或其他可以设置超时的互斥函数。超时为end_time - now。如果pthread_cond_timedwait 返回ETIMEDOUT 表示超时已经过去,你不必做这项工作。

【讨论】:

    猜你喜欢
    • 2017-04-07
    • 2021-04-05
    • 1970-01-01
    • 2014-03-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多