> 文章列表 > 进程和线程的区别

进程和线程的区别

进程和线程的区别

进程线程的区别

  • 进程
  • 线程
  • 线程和进程的区别
    • 堆栈空间
    • 安全性
    • 通信机制
  • 什么时候使用进程和线程
  • 线程和进程之间的关系
  • 多线程一般用在哪些方面
  • 多线程的优点
  • 多线程的缺点

进程

资源分配的最小单元

线程

程序执行的最小单元
系统分配处理器时间的基本单元

线程和进程的区别

堆栈空间

进程:拥有他自己的堆栈空间和他的一个数据段的。
如果说我们去启动一个新的进程的时候,我们必须给他分配一个独立的地址空间。然后建立一些数据表来维护他的代码段比如说堆栈段或者数据段。所以我们进程的系统开销是比较大的。

线程:拥有自己的独立的堆栈空间,但是他的数据段是共享的。
他们可以使用一样的地址空间去共享数据。那么他的开销将比我们的进程更加小。而且线程的切换速度是要比进程快的。

安全性

但是我们进程的安全性会比我们的线程高一些。因为我们进程他会有一个独立的地址空间。如果说我们的进程崩溃了,那么我们在保护模式下面他不会对其他进程产生影响的。

通信机制

从通信机制层面来说,我们进程之间的通信会比较复杂,比如说我们可以基于管道、基于信号、基于消息队列或者共享内存或者说套接字等等等等。我们要利用这些去建立我们的通信机制。

但是线程则比较简单,可以去共享我们的数据段,所以从通信机制方面来说,我们的线程是更加的方便。

什么时候使用进程和线程

如果需要频繁的创建和销毁,那么应该优先使用线程。

因为进程的这两个操作,代价非常大,并且线程的切换速度比较快。

如果我们需要并行地操作,那我们使用线程会比较好。

如果说我们需要一个稳定的安全的状态,这个时候我们就适合选用我们的进程。需要速度,那么就需要选用我们的线程。

线程和进程之间的关系

线程只能是属于我们的一个进程,但是一个进程可以有多个线程。但至少需要有一个线程。因为线程是我们操作系统可以识别的最小执行调度单元。

多线程一般用在哪些方面

用于高并发的一些地方,比如说我们有两个任务,一个任务A和一个任务B,如果说任务A和任务B是没有关联的。那么我们使用单个线程,得先处理完A才能处理B。但如果我们执行的是多线程,那么我们就能同时执行A和B。

多线程的优点

  1. 线程可以把我们占据时间长的一些任务放到后台去处理。他不会影响我们主线程的使用。
  2. 他可以使我们整个程序运行速度更快。
  3. 多线程可以交替去执行。

多线程的缺点

  1. 线程数过多的话,上下文时间切换的影响较大。
  2. 每个线程都会占用我们的内存资源,如果说我们的线程数越多的话,我们占用的内存资源也就会越多。
  3. 给程序带来一些意想不到的错误,包括对共享变量的操作和一些问题的排查也会变得复杂。

参考资料:字节一面——说下进程和线程的区别?