单核心CPU机器上,两个进程能否同时运行同一方法?
单核心CPU上两个进程能否同时运行同一方法?
结论很明确:同一物理时刻绝对做不到,但从用户的宏观感知来说,会有“好像在同时运行”的错觉。
具体拆解:
- 单核心CPU只有一个运算核心,同一时间只能处理一个进程(或线程)的指令流。操作系统的时间分片调度,只是在不同进程之间快速切换(通常是毫秒级),每个进程在自己的时间片里执行代码,切换速度快到人眼和普通程序都察觉不到,所以会产生“同时运行”的假象,但本质是串行交替执行。
- 哪怕两个进程都在执行同一个方法,它们也得排队占用CPU:进程A先跑一会儿这个方法的代码,时间片用完就被操作系统挂起,接着切换到进程B跑同一方法的代码,之后再切回进程A继续,循环往复。
- 这里要明确“同时运行”的定义:如果是指同一瞬间两个进程的指令都在被CPU执行,单核心下完全不可能;如果是指宏观上两个进程都在推进这个方法的执行进度,那通过时间分片确实能达到这种效果,但不是真正的并行。
额外补充:
- 就算是同一个进程里的多个线程,在单核心CPU上也是靠时间分片交替执行,不存在真正的同时运行。
- 只有在多核/多CPU的机器上,不同进程(或线程)才能真正在同一时刻并行执行同一个方法。
内容的提问来源于stack exchange,提问作者anon
相关产品推荐
相关产品推荐

