这是我在Oracle文档中看到的,并希望确认我的理解(source):
计算机系统通常具有许多活动的进程和线程。这个 即使在只有一个执行核心的系统中也是如此,并且 因此在任何给定时刻只有一个线程实际在执行。 单个内核的处理时间在进程之间共享,并且 通过称为时间分片的操作系统功能进行线程化。
这是否意味着在单核计算机中,给定时刻只能执行一个线程? 而且,这是否意味着在多核计算机上可以在给定的时刻执行多个线程?
答案 0 :(得分:1)
这是否意味着在单核计算机中,给定时刻只能执行一个线程?
不,假设处理器没有执行CPU限制的工作,则可以轻松拥有比处理器更多的线程。例如,如果您有两个线程主要在等待IO(来自网络或本地存储),另一个线程正在消耗前两个线程获取的数据,那么您肯定可以在具有单个内核的计算机上运行该线程,并获得比一个线程。
而且,这是否意味着在多核计算机上可以在给定的时刻执行多个线程?
是的,只要您有足够的内存为每个内核分配堆栈,就可以在任意数量的内核上执行任意数量的线程。显然,如果每个线程都大量使用CPU,那么当线程数超过内核数时,它将停止高效运行。