进程与线程的区别

2021年3月6日 288Browse 1Like 0Comments

进程与线程的区别

前面的文章对进程和线程做了详细的阐述,现在让我们总结一下线程和进程的区别。

  • 一个线程只能属于一个进程,而一个进程可以有多个线程。进程至少有一个线程。线程依赖于进程而存在。

  • 进程是CPU资源分配的最小单位,线程是CPU调度的最小单位

  • 进程有独立的系统资源,而同一进程内的线程共享进程的大部分系统资源。资源分配给进程,同一进程的所有线程共享该进程的所有资源。同一进程中的多个线程共享代码段(代码和常量),数据段(全局变量和静态变量),扩展段(堆存储)。但是每个线程拥有一些在运行中必不可少的资源,如栈段,栈段又叫运行时段,用来存放所有局部变量和临时变量。

  • 系统开销方面,进程在创建、切换和销毁时开销比较大,而线程比较小。 由于在创建或撤消进程时,系统都要为之分配或回收资源,如内存空间、I/O设备等。因此,操作系统所付出的开销将显著地大于在创建或撤消线程时的开销。类似地,在进行进程切换时,涉及到整个当前进程CPU环境的保存以及新被调度运行的进程的CPU环境的设置。而线程切换只须保存和设置少量寄存器的内容,并不涉及存储器管理方面的操作。可见,进程切换的开销也远大于线程切换的开销。

  • 通信方面,进程间通信比线程间通信更复杂。由于同一进程中的多个线程具有相同的地址空间,致使它们之间的同步和通信的实现,也变得比较容易。

  • 进程间相互独立;线程间相互影响。一个进程崩溃,不会对其他进城产生影响;而一个线程崩溃,会让同一进程内的其他线程也死掉。

  • 进程编程调试简单可靠性高,但是创建销毁开销大;线程正相反,开销小,切换速度快,但是编程调试相对复杂。

  • 进程适应于多核、多机分布;线程适用于多核

声明

本文章未经授权谢绝转载。如需转载,请联系admin@agedcat.com。

agedcat_xuanzai

这个人很懒,什么都没留下

Comments