clock_nanosleep - 请求和保留的相同指针

clock_nanosleep - same pointer for request and remain?

本文关键字:指针 保留 求和 nanosleep 请求 clock      更新时间:2023-10-16

在请求中提交相同的对象以clock_nanosleep并保留参数是否安全?

do {
   ret = clock_nanosleep(CLOCK_MONOTONIC, 0,  &t, &t);
} while (ret == EINTR);

我目前正在研究一种现象,即系统有时永远不会离开该循环(尽管通常会)。

问候

在请求中提交相同的对象以clock_nanosleep并保留参数是否安全?

至少在符合POSIX的环境中,这很好。

来自POSIX clock_nanosleep文档,

rqtp 和 rmtp 参数可以指向同一个对象。

特别是对于 LINUX,我在我的本地手册页中看不到任何关于此的内容,至少没有明确禁止它。非 NULL remain 时间规范仅在调用已经返回且相对休眠不完整时才写入:在此期间或之后,它不需要再次读取请求时间规范。

手册页还说(剩余时间规范)

然后,可以使用此值再次调用 clock_nanosleep() 并完成(相对)睡眠。

在这种情况下,clock_nanosleep当然希望将其写回同一个变量中。