从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睡眠文档说的是。