单核CPU下,线程实际还是串行执行的。操作系统中有一个组件叫任务调度器,将CPU的时间片分给不同线程使用,只是由于CPU在线程间的切换非常快,感觉总是同时运行的。微观串行,宏观并行
一般将这种线程轮流使用CPU的做法称为并发
多核CPU下,每个核都可以调度运行线程,这时候线程是并行的
- 并发:同一时间应对多件事情的能力
- 并行:同一时间动手做多件事情的能力
例子:
-
家庭主妇做法、打扫卫生、给孩子喂奶,她一个人轮流交替做这么多事情,这时候就是并发
-
家庭主妇雇了一个保姆,她们一起做这些事情,这时候既有并发,也有并行(这时候会产生竞争,例如锅只有一口,一个人用锅时,另一个就得等待)
-
雇了3个保姆,一个专做饭、一个专打扫卫生、一个专喂奶,互不干扰,这时是并行