我想知道操作系统中的任务调度器是如何处理休眠线程的。
我的意思是,调度程序是否仍会检查休眠线程,或者在确定在接下来的 10 毫秒或给定的多长时间内激活哪个线程时完全跳过。
我问这个问题的原因是想弄清楚休眠线程是否消耗 CPU 周期(尽管很少)。
那么有人知道会发生什么吗?
你知道从 Windows 到 Linux 有什么不同吗?
最佳答案
当 CPU 正在执行该线程的指令时,该线程就会运行。调度程序将 CPU 交给可运行的线程。休眠线程只是调度程序内部表的一个条目;该线程本身不消耗 CPU,因为调度程序知道该线程不可运行,因此不会给他 CPU。该条目在概念上包含线程应被唤醒的时间。
sleep 线程可能有间接成本,由调度程序本身管理时间。这实际上取决于调度程序采用的结构和算法;据传,Linux 内核调度程序非常擅长管理数千个休眠线程,而无需花费太多时间来决定运行哪个线程。其他一些操作系统的表现也不尽如人意,但根据经验,当线程/进程总数少于一千时,这种影响可以忽略不计。
关于windows - 休眠线程时到底发生了什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2297837/