浅谈进程与线程

Posted jiangxinyang

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了浅谈进程与线程相关的知识,希望对你有一定的参考价值。

(一)两者的定义

  进程:进程是一个具有独立功能的程序关于某个数据集合的一次运行活动,它是操作系统动态执行的基本单元。没有运行的程序不能算是一个进程。

  线程:线程是进程的一个实体,是CPU调度和分派的基本单位,它是比进程更小的能独立运行的基本单位。每个进程至少有一个线程。

(二)两者的区别

  (1)进程享有自己的独立内存和资源,线程共享所在进程(主线程)的资源。

  (2)创建进程所需要消耗的时间要大于线程,且进程消耗的系统资源更多。

  (3)进程间的通信需要借助其他工具(例如管道、消息队列、共享内存等),线程间由于共享资源可以直接通信。

  (4)操作系统通过调度切换进程或线程来实现高并发,进程之间的切换时间要远大于线程,这也是导致多线程被提出的原因。

  (5)在多线程中一个线程死掉会导致该进程下所有的线程都死掉,而进程不会,因此进程比线程要健壮很多。

  (6)多线程由于共享资源,因此在执行过程中可能出现多个线程同时处理某一资源,导致获得的结果错误,因此在多线程中经常需要引入锁机制,多进程一般不需要加锁。

总结:

  线程由于创建速度、切换速度快,且不占据太多的系统资源,因此在执行高并发的 I/O 操作具有较大的优势,但是线程的数量不宜太多,当线程太多时,大量的时间被用在了线程间的切换上。但是在计算密集型上一般采用多进程(进程的数量最好和计算机的核心数相等)来执行,因为计算密集型很消耗CPU,为保证CUP的充分利用,要尽量减少CPU做其他的工作(比如调度进程和线程)。

 

以上是关于浅谈进程与线程的主要内容,如果未能解决你的问题,请参考以下文章

多线程下的fork问题(模拟与解决)

多线程下的fork问题(模拟与解决)

多线程与多进程的区别

浅谈守护进程和守护线程

浅谈多线程

浅谈linux下进程最大数最大线程数进程打开的文件数