【发布时间】:2011-09-24 04:01:13
【问题描述】:
在 Windows 上,Sleep(0) 在没有指定最短时间的情况下产生线程控制,(see here) 但是在 Linux 和 POSIX 上,来自 unistd.h 的 sleep(0) 只是被忽略了。
在 Linux 中获得类似 Sleep(0) 的行为的最佳方法是什么?
【问题讨论】:
在 Windows 上,Sleep(0) 在没有指定最短时间的情况下产生线程控制,(see here) 但是在 Linux 和 POSIX 上,来自 unistd.h 的 sleep(0) 只是被忽略了。
在 Linux 中获得类似 Sleep(0) 的行为的最佳方法是什么?
【问题讨论】:
试试“sched.h”中的sched_yield,它是专为您想做的事情而创建的。
如果由于某种原因这不起作用 - 尝试 usleep(1) - 这将产生至少 1 微秒的延迟(可能更多),进而触发上下文切换(如果有任何线程正在等待)。
【讨论】:
nanosleep 提供更高的分辨率,更不用说usleep 在 POSIX 中已被弃用并计划删除...