进程和线程?你确定你真的弄懂了吗?

进程和线程?你确定你真的弄懂了吗?

进程和线程只有一字之差,看得快(一目十行)的同学可能一下子就忽略过去了。感觉他们像孪生兄弟一样。进程=线程?好像这两兄弟也差不多吧?如果你真这么想的话,恭喜你,你需要学习了。

什么是进程

进程是程序处理机器上的一次执行的过程,它是系统进行资源分配和调度的一个独立的单位。如果你的PC的Windows 10的话,你空白处右键-任务管理器。第一个列表就是进程了。它是一个独立程序执行体(简单说你双击点开的任何一个程序在任务管理器中都是一个进程)。

什么是线程

线程是进程的一个实体,它是比进程更小的一个能独立运行的存在。线程拥有的资源很少,它和同一个进程中的其他线程共享进程的资源。简单点来讲,线程是不能独立于进程存在的。它呢永远是进程的一份子。

 

差异总结

地址空间差异

同一进程的线程共享本进程的地址空间,而进程之间则是独立的地址空间。资源共享差异

(一家有多口人,但是最后还是住在一起的。每家人的住址都是不一样的)

同一进程内的线程共享本进程的资源,但是进程之间的资源是独立的

(不是一家人不进一家门,好东西要一家人共享的。别人家的东西能免费共享吗?娃哈哈!)

健壮性差异

一个进程崩溃后,在保护模式下不会对其他进程产生影响,一个线程崩溃整个进程都死掉,所以多进程要比多线程健壮。

(想想现在新冠,一人得病,一家人都要被殃及,但是楼下的没啥事呀!照样的折腾!)

资源消耗差异

进程切换时,消耗的资源大,效率高。所以涉及到频繁的切换时,使用线程要好于进程。同样如果要求同时进行并且又要共享某些变量的并发操作,只能用线程不能用进程;

(这就是为什么现在多线程并发编程火热的原因了!没办法现在地球人太多了!)

执行差异

每个独立的进程有一个程序运行的入口、顺序执行序列和程序出口。线程必须依存在进程中。

(每家的大门都只有那么一个,如果有意见,另外卖新房子呀!)

大小差异

线程是处理器调度的基本单位,但是进程不是。

(一个人是不能再拆了,但是一家人可以分成几个人)

进程和线程?你确定你真的弄懂了吗?