【问题标题】:Linux thread state on sleep call睡眠调用上的 Linux 线程状态
【发布时间】:2021-05-11 13:49:51
【问题描述】:

我最近阅读了一些关于 Linux 线程调度器的论文(关于该主题的一些简单介绍)。在这些不同的状态下,一个 linux 线程可以有解释(准备,运行,等待,...)。 我现在想知道调用类似sleep 的方法(C 中的sleep()、C++ 中的this_thread::sleep_for、C# 中的Thread.Sleep() 等)是否将线程的状态设置为OS 级别。尽管我想应该,但我只是想确定一下,因为我有点困惑。谢谢

【问题讨论】:

  • 试试吧!我认为像pstop 或(我最喜欢的)htop 这样的工具会显示线程的状态。
  • 是的,我想这就是我应该做的。我会尽快尝试。

标签: linux multithreading


【解决方案1】:

按照Ulrich Eckhardt的建议,我自己试了一下:

#include <unistd.h>

int main() {
    sleep(60);
    return 0;
}
$ gcc test.c -o test
$ ./test &
$ top -H -p $(pidof test)

除其他外,我得到了:

Threads:   1 total,   0 running,   1 sleeping,   0 stopped,   0 zombie

所以确实调用sleep-like 函数会将操作系统级别线程的状态设置为“睡眠”。

【讨论】:

    猜你喜欢
    • 2012-12-16
    • 2012-06-21
    • 1970-01-01
    • 1970-01-01
    • 2012-08-08
    • 1970-01-01
    • 2016-10-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多