我一直遵循多线程只能在多处理器系统上实现的概念,其中有多个处理器分配给每个线程并且每个线程都可以同时执行。在这种情况下没有调度,因为每个线程都有单独的资源,所有资源都专用于它。 但是我最近在某个地方读到它,我也可以在单处理器系统上进行多线程处理。 这是对的吗?如果是,那么单处理器系统和多处理器系统之间有什么区别?
最佳答案
I recenetly read it somewhere that I can do multithreading on single processor system as well. Is it correct? and if yes then what is the difference between single processor and multiple processor systems?
是的,您可以在单处理器系统上执行多线程。
在多处理器系统中,多个线程在不同的内核上同时执行。 例如-如果有两个线程和两个核心,那么每个线程将在单独的核心上运行。
在单处理器系统中,多个线程执行,一个接一个地执行或等待直到一个线程完成或被操作系统抢占,这取决于线程优先级和操作系统策略。但是正在运行的线程,给人一种错觉它们同时运行,相对于用户空间应用程序所需的应用程序响应时间。
时间比较(示例):
如果两个线程各花费 10us 来执行,那么在 2 处理器系统上,净花费的时间是 10us
如果两个线程各花费 10us 来执行,那么在 1 个处理器的系统上,净花费的时间是 20us
关于多线程可以在单处理器系统上实现吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16116952/