背景:
我需要把并行,并发讲给计算机初学者,甚至是HR这种非计算机专业的人听,如何让他们生动了解并行,并发的原理及其实现成为一个难题,在一次排队买饭的过程中忽然来了灵感。
这里有几个比喻:
- 把排队买饭的人类比成CPU待处理的指令
- 把厨房认为是CPU,那么厨房做菜的厨师类比成处理指令的CPU核心
并发:
厨房里面只有一个厨师两口锅,如果这个厨师同时用两口锅炒菜,一会儿翻一下第一口锅,一会儿翻一下第二口锅,在两口锅上交替炒菜,虽然在外边等待的人看起来是一次出来两个菜,但是同一时间厨师只能操作一口锅。(一核两线程)
并行:
厨房里面有两个厨师两口锅,两个厨师可以同时炒菜,同一时间两个人同时处理,互不影响。菜也是同时出来。(双核)
总结:
如何提高CPU吞吐:
- 适度增加线程数
- 增加物理核心数
- 增加CPU数量
注意:
- 增加CPU吞吐往往是1,2,3 并用所以才会出现8核16线程这种CPU
- 任何解决问题的方法都来源于生活