进程、线程和协程,是多任务编程中的常用术语。很多初学者分不清它们之间的区别,今天就以一个小故事为引子,让大家搞清楚他们之间的本质区别。
话说在西凉女儿国,大唐文化传播有限公司CEO唐僧招聘了三个员工做游戏直播,他们分别是:孙悟空、猪八戒和沙僧。唐僧分别给他们租了三套一室一厅的房子,独门独户,他们三个每人各住一套,独享各自的卫生间和厨房,互不干扰。这有点类似于进程,在Linux环境下,每个进程有自己各自独立的 4G 地址空间,大家互不干扰对方,如果两个进程之间通信的话,还需要借助第三方进程间通信工具 IPC 才能完成。
如上所示,进程A和进程B,各自有4G地址空间,除了1G的内核空间是共享的,用户空间则是相互独立的。不同的进程通过页表映射,映射到物理内存上各自独立的存储空间,在操作系统的调度下,分别轮流占用CPU去运行,互不干扰、互不影响,甚至相互都不知道对方。在每个进程的眼里,CPU就是他的整个世界,虽然不停地被睡眠,但是一旦恢复运行,一觉醒来,仿佛什么都没发生过一样,认为自己拥有整个CPU,一直在占有它。这就像悟空、八戒和沙僧一样,各自在自己的房间里,互相不知道对方。
后来公司不景气,为了节省开支,原来的三套房子都退了,唐僧给他们三个租了一套三室一厅的房子,

本文通过西凉女儿国唐僧带领的团队租房故事,生动解析了进程、线程和协程的区别与联系,以及它们在多任务编程中的角色。从独门独户的进程,到共居一室的线程,再到和谐共处的协程,形象地展现了多任务处理的演进。
最低0.47元/天 解锁文章
658

被折叠的 条评论
为什么被折叠?



