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