睡眠调用时的 Linux 线程状态

时间:2021-05-11 13:49:51

标签: linux multithreading

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

1 个答案:

答案 0 :(得分: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 的函数会将操作系统级线程的状态设置为“睡眠”。

相关问题