进程与线程的区别
前面的文章对进程和线程做了详细的阐述,现在让我们总结一下线程和进程的区别。
-
一个线程只能属于一个进程,而一个进程可以有多个线程。进程至少有一个线程。线程依赖于进程而存在。
-
进程是CPU资源分配的最小单位,线程是CPU调度的最小单位。
-
进程有独立的系统资源,而同一进程内的线程共享进程的大部分系统资源。资源分配给进程,同一进程的所有线程共享该进程的所有资源。同一进程中的多个线程共享代码段(代码和常量),数据段(全局变量和静态变量),扩展段(堆存储)。但是每个线程拥有一些在运行中必不可少的资源,如栈段,栈段又叫运行时段,用来存放所有局部变量和临时变量。
-
系统开销方面,进程在创建、切换和销毁时开销比较大,而线程比较小。 由于在创建或撤消进程时,系统都要为之分配或回收资源,如内存空间、I/O设备等。因此,操作系统所付出的开销将显著地大于在创建或撤消线程时的开销。类似地,在进行进程切换时,涉及到整个当前进程CPU环境的保存以及新被调度运行的进程的CPU环境的设置。而线程切换只须保存和设置少量寄存器的内容,并不涉及存储器管理方面的操作。可见,进程切换的开销也远大于线程切换的开销。
-
通信方面,进程间通信比线程间通信更复杂。由于同一进程中的多个线程具有相同的地址空间,致使它们之间的同步和通信的实现,也变得比较容易。
-
进程间相互独立;线程间相互影响。一个进程崩溃,不会对其他进城产生影响;而一个线程崩溃,会让同一进程内的其他线程也死掉。
-
进程编程调试简单可靠性高,但是创建销毁开销大;线程正相反,开销小,切换速度快,但是编程调试相对复杂。
-
进程适应于多核、多机分布;线程适用于多核
声明
本文章未经授权谢绝转载。如需转载,请联系admin@agedcat.com。
文章评论