我需要帮助。 我正在编写以下代码:
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?
答案 0 :(得分:1)
您可以使用pthread_cond_timedwait
之类的函数或其他可以设置超时的互斥函数。超时时间为end_time - now
。如果pthread_cond_timedwait
返回ETIMEDOUT
,则表示超时已过,您无需执行此操作。