对于求职者,在面试的时候大多都会被问到“你对多线程了解么?给我讲讲线程和进程的区别吧。”
在unix中,一个进程可以理解为线程+地址空间+文件描述符+数据,道破现实,其实就相当于老板和员工,老板就是进程,员工就是线程。老板需要雇佣若干员工(线程),还要有办公楼(地址空间),还要有若干的办公设备(文件描述符),还要有项目(数据),不同的员工,在老板提供的这些资源下,可以做不同的/相同的工作。对于员工来说,只需要使用老板提供的这些资源来展开工作,不需要自己提供硬件资源(即使拿着自己的笔记本,也是来娱乐的,与工作无关,哈哈)。在员工离职(线程结束)的时候,公司的一草一木你都是拿不走的,而新来的员工,继续你的位置,进行同样的工作。
这是背景或角色上的分析,再看看所谓的调度效率,从现实角度看,二者的调度效率就不言而喻了。员工跳个槽那是分分钟的是,无非是写个“世界很大,我想去看看”的辞职报告,再发个微博晒晒,不带走一片云彩。而老板要是想“搬迁”,那就麻烦的一塌糊涂了。