我看到有一个问题 pthread睡眠linux
但是,当我在我的linux机器上查找man page时,我看到以下内容。
概要 #包括
unsigned int sleep(unsigned int seconds);
描述 sleep()使当前进程休眠直到秒秒 已经过了或者 信号到达时不被忽略。
所以我的问题是,我想知道我应该遵循哪个手册页来让线程睡眠。另外,如果两者都是真的,我该如何控制?
我可以编写一些代码来测试它,但我想确保听到其他人的一些反馈。
谢谢。
我看到有一个问题 pthread睡眠linux
但是,当我在我的linux机器上查找man page时,我看到以下内容。
概要 #包括
unsigned int sleep(unsigned int seconds);
描述 sleep()使当前进程休眠直到秒秒 已经过了或者 信号到达时不被忽略。
所以我的问题是,我想知道我应该遵循哪个手册页来让线程睡眠。另外,如果两者都是真的,我该如何控制?
我可以编写一些代码来测试它,但我想确保听到其他人的一些反馈。
谢谢。
您的手册页中的措辞可能有误。相信标准和信任 kernel.org上的手册页。写下发行版文档的维护者并告诉他们更新手册页。
您的手册页中的措辞可能有误。相信标准和信任 kernel.org上的手册页。写下发行版文档的维护者并告诉他们更新手册页。
我的Linux机器上有两个关于睡眠功能的手册页:
$ man -k sleep
sleep (3) - Sleep for the specified number of seconds
sleep (3p) - suspend execution for an interval of time
第一个说“当前的过程”和你的一样。
第二个说“调用线程”但它的序言说:
本手册页是POSIX程序员手册的一部分。此接口的Linux实现可能有所不同(请参阅相应的Linux手册页 Linux行为的详细信息),或者可能无法在Linux上实现该接口。
所以我得出结论 sleep(3)
描述了实际的行为和 sleep(3p)
仅供参考。
@cnicutar引用的手册页说明了这一点 sleep
是 不 线程安全(也许这是自2011年以来的新内容?)。有趣的是,Dave Butenhof的1997年的书(“用Posix线程编程”)确实包含了一个与 sleep
(P18)。 这个 是一个旧的线程(另一种)在comp.programming.threads上,Butenhof和其他人讨论 nanosleep
在pthreads的上下文中。
简而言之, nanosleep
是的,我想,好吧,但是 sleep
不是。该 nanosleep
kernel.org的手册页没有说明是否 nanosleep
是线程安全的,但是 gcc睡觉的文件 说是的。