这段代码会做什么?
struct timespec wait;
wait.tv_sec = 0;
wait.tv_nsec = 0;
nanosleep(&wait, NULL);
或
...
clock_nanosleep(CLOCK_REALTIME, 0, &wait, NULL);
它会被优化掉吗?或者进程简单地抢占并立即返回运行队列?或者什么?
使用nanosleep和clock_nanosleep之间有什么区别,这里给出的参数完全正确吗?
答案 0 :(得分:0)
线程是否实际上会被暂停一段时间似乎无法保证。如果需要特定行为,最好绕过呼叫或使用0
以外的值。
答案 1 :(得分:0)
它会被优化掉吗?
不,它不能可靠地减少到一个nop。
或过程简单地抢占并立即恢复运行 队列?
是的,对于某些值"立即"。看起来没有任何类型的零超时短路径,因此它将像任何其他过期超时一样重新安排。
使用nanosleep和clock_nanosleep之间有什么区别,这里给出的参数完全正确吗?
根据nanosleep(2)没有。