进程和线程?你确定你真的弄懂了吗?
进程和线程只有一字之差,看得快(一目十行)的同学可能一下子就忽略过去了。感觉他们像孪生兄弟一样。进程=线程?好像这两兄弟也差不多吧?如果你真这么想的话,恭喜你,你需要学习了。
什么是进程
进程是程序处理机器上的一次执行的过程,它是系统进行资源分配和调度的一个独立的单位。如果你的PC的Windows 10的话,你空白处右键-任务管理器。第一个列表就是进程了。它是一个独立程序执行体(简单说你双击点开的任何一个程序在任务管理器中都是一个进程)。
什么是线程
线程是进程的一个实体,它是比进程更小的一个能独立运行的存在。线程拥有的资源很少,它和同一个进程中的其他线程共享进程的资源。简单点来讲,线程是不能独立于进程存在的。它呢永远是进程的一份子。
差异总结
地址空间差异
同一进程的线程共享本进程的地址空间,而进程之间则是独立的地址空间。资源共享差异
(一家有多口人,但是最后还是住在一起的。每家人的住址都是不一样的)
同一进程内的线程共享本进程的资源,但是进程之间的资源是独立的
(不是一家人不进一家门,好东西要一家人共享的。别人家的东西能免费共享吗?娃哈哈!)
健壮性差异
一个进程崩溃后,在保护模式下不会对其他进程产生影响,一个线程崩溃整个进程都死掉,所以多进程要比多线程健壮。
(想想现在新冠,一人得病,一家人都要被殃及,但是楼下的没啥事呀!照样的折腾!)
资源消耗差异
进程切换时,消耗的资源大,效率高。所以涉及到频繁的切换时,使用线程要好于进程。同样如果要求同时进行并且又要共享某些变量的并发操作,只能用线程不能用进程;
(这就是为什么现在多线程并发编程火热的原因了!没办法现在地球人太多了!)
执行差异
每个独立的进程有一个程序运行的入口、顺序执行序列和程序出口。线程必须依存在进程中。
(每家的大门都只有那么一个,如果有意见,另外卖新房子呀!)
大小差异
线程是处理器调度的基本单位,但是进程不是。
(一个人是不能再拆了,但是一家人可以分成几个人)