如何解决从pthread调用sleep是否会使线程进入睡眠或进程状态?
| 我看到有一个关于pthread sleep linux的问题 但是,当我在Linux机器上查找手册页时,会看到以下内容。 概要 #包括 unsigned int sleep(unsigned int seconds);
描述
sleep()使当前进程进入休眠状态,直到几秒钟
已经过去或
信号到来,这是不容忽视的。
所以我的问题是我想知道应该让哪个手册页进入线程休眠状态。此外,如果两个都成立,我该如何控制?
我可能可以编写一些代码对其进行测试,但是我想确保也能听到其他人的反馈。
谢谢。
解决方法
您的手册页中的措词可能是错误的。信任标准并信任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 \'s在1997年出版的《用Posix线程编程》中确实包含了一个示例,该示例使用sleep
(p18)休眠线程。这是comp.programming.threads上的旧线程(另一种线程),其中Butenhof和其他人在pthreads上下文中讨论nanosleep
。
简而言之,我认为nanosleep
是好的,但是sleep
不是。 kernel.org上的nanosleep
手册页没有说明nanosleep
是否是线程安全的,但是gcc睡眠文档说的是。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。