「Learning」区别线程和进程

之前在码农翻身上看到一篇讲解线程、进程和协程的文章,觉得写得很好,所以搬过来学习一下。

学习内容:《一个故事讲完进程、线程和协程》

Learning Card

阶段一:

背景:CPU是稀缺资源,程序必须排队轮流使用

批处理: 程序A执行完成后,程序B再执行

阶段二:

背景:CPU速度越来越快,批处理效率太低,资源浪费太大

进程:一个执行中的程序,它可以暂停下来,暂停的地方即执行到哪一行程序指令了,是这个进程的执行现场,暂停之后再次执行时,从执行现场开始继续。程序之间是相互交替执行的。
并发:由于CPU的运行速度特别快,虽然程序再不断切换运行,但看起来像是在同时执行
并行:每个程序能够占用一个CPU,真正地同时执行
线程:程序中的单一的顺序控制流程,是最小的调度单位。每个程序都至少有一个线程,如果只有一个线程,就是程序本身;也可以同时运行多个线程完成不同的工作,成为多线程

阶段三:

背景:多线程的协作有时会比较麻烦,需要加锁和线程的通知、等待等。

协程:比线程更加轻量级,它就像是有多个轻量级的线程,它们之间会切换控制权,控制权在谁手里,谁就执行

协程近几年在Lua和Python中应用比较多。


为了方便记忆,我整理了一下以上知识点。

一个程序一个进程
程序里面还有线程
一个线程叫单线程
多个线程叫多线程
线程里还能有协程

一个CPU配多个进程叫并发
每个进程配一个CPU叫并行