我看到有关于pthread sleep linux
的问题然而,当我在我的linux机器上查找man page时,我看到以下内容。
概要 #include
unsigned int sleep(unsigned int seconds);
说明 sleep()使当前进程休眠直到秒秒 已过了或过了 信号到达时不会被忽略。
所以我的问题是,我想知道我应该遵循哪个手册页来让线程睡眠。另外,如果两者都是真的,我该如何控制呢?
我可以编写一些代码来测试它,但我想确保听到其他人的一些反馈。
谢谢。
答案 0 :(得分:10)
您的手册页中的措辞可能有误。信任标准并信任 the man page on kernel.org 。写下发行版文档的维护者,并告诉他们更新手册页。
答案 1 :(得分:1)
我的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)
仅供参考。
答案 2 :(得分:1)
@cnicutar引用的手册页说sleep
不线程安全(也许这是2011年以来的新内容?)。有趣的是,Dave Butenhof的1997年着作('用Posix线程编程')确实包含了一个用sleep
(p18)睡眠线程的例子。 This是comp.programming.threads上的旧线程(另一种),其中Butenhof和其他人在pthreads的上下文中讨论nanosleep
。
简而言之,我认为nanosleep
是好的,但sleep
不是。 kernel.org上的nanosleep
手册页没有说明nanosleep
是否是线程安全的,但gcc sleeping docs表示它是。