c++ - 我需要将什么时间函数与 pthread_cond_timedwait 一起使用?

标签 c++ c linux synchronization pthreads

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/

相关文章:

c++ - 将源中的 std::clog 移动到输出文件

c++ - 可滚动背景,上面有可调整大小的 Qt 小部件

c - 如何避免在 Linux 中多次启动二进制文件?

c - 让用户选择是否退出程序

linux - 在 bash 中访问 Perl 数组

javascript - 如何在 JavaScript 中使用 linux 命令?

具有赋值运算符的类的 C++ 深拷贝

c++ - 在同一项目中的 2 个不同的 C++ 文件之间传递值

c - 将2个字节转换为带符号的16位整数的正确方法是什么?

c - C语言中哥德巴赫猜想的Seg错误