gpt4 book ai didi

c - 特定时间的 sem_timedwait()

转载 作者:太空宇宙 更新时间:2023-11-04 10:58:23 26 4
gpt4 key购买 nike

我想在信号量上等待 20 英里秒,如下所示,但是当我打印 tv_sec 和 tv_nsec 的值时,它们的值变得非常大。

任何人都可以帮助理解下面的代码。

if (clock_gettime(CLOCK_REALTIME, &ts) == -1)
{
//throw error
}
ts.tv_nsec += 20000000;
ts.tv_sec += ts.tv_nsec / 1000000000;
ts.tv_nsec %= 1000000000;

sem_timedwait(&semaphore, &ts)

最佳答案

应该很大。clock_gettime(CLOCK_REALTIME, &ts) 给出自大纪元时间以来的滴答声,您正在添加到该返回值。

来自http://man7.org/linux/man-pages/man2/clock_gettime.2.html手册页。

All implementations support the system-wide realtime clock, which is identified by CLOCK_REALTIME. Its time represents seconds and nanoseconds since the Epoch. When its time is changed, timers for a relative interval are unaffected, but timers for an absolute point in time are affected.

来自 sem_timedwait(3) - Linux 手册页

int sem_timedwait(sem_t *sem, const struct timespec *abs_timeout);

abs_timeout 参数指向一个结构,该结构指定自 Epoch 以来以秒和纳秒为单位的绝对超时

关于c - 特定时间的 sem_timedwait(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27946983/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com