pthread_cond_timedwait 函数需要时间 timespec 结构中的绝对时间。
我应该使用什么时间函数来获取绝对时间。我在网上看到了很多例子,我发现几乎所有时间功能都被使用了。 (ftime、clock、gettimeofday、clock_gettime(所有可能的 CLOCK_...)。
pthread_cond_timedwait 使用绝对时间。这个等待时间会不会因为改变机器的时间而受到影响?另外,如果我使用其中一个时间函数获取绝对时间,如果机器时间在获取和添加增量时间之间发生变化,这会影响等待时间吗?是否有可能用相对时间等待事件?
最佳答案
要使用的函数是带有条件变量的时钟 ID 的 clock_gettime()
。此时钟 ID 默认为 CLOCK_REALTIME
,但可以通过使用 pthread_condattr_t
初始化条件变量来更改(例如更改为 CLOCK_MONOTONIC
), >pthread_condattr_setclock()
已被调用。
使用 time()
不是一个好主意,因为这不能保证等于 clock_gettime(CLOCK_REALTIME)
的 tv_sec
。在某些情况下,这可能会导致您的程序忙于等待 time()
到达 clock_gettime(CLOCK_REALTIME)
不久前已经达到的秒数。
关于c++ - 我需要将什么时间函数与 pthread_cond_timedwait 一起使用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3006259/