进程 and 线程

目录

一、概念

二、进程VS线程

三、多线程和多进程的使用场景

四、使用多线程目的


一、概念

在传统的操作系统内,每个进程都有一个地址空间,且默认存在一个控制线程。

如果把软件比喻成一个工厂,则进程是一个车间,线程是一个流水线。进程集中资源交由线程执行。

  • 多进程:在系统内开辟多个地址空间,进程间相互隔离,数据不互通。存在父子关系。
  • 多线程:一个进程中存在多个控制线程,多个控制线程共享该进程的地址空间,享受该进程的资源。不存在父子关系。

二、进程VS线程

进程:

  1. 进程有自己的地址空间。创建时开辟空间。
  2. 进程拥有父进程的数据段的自己的副本。
  3. 进程必须使用进程间通信来与兄弟进程通信。
  4. 新进程需要复制父进程。
  5. 对父进程的更改不会影响子进程。

线程:

  1. 线程共享创建它的进程的地址空间。
  2. 线程可以直接访问进程的数据段。
  3. 线程可以直接与进程的其他线程通信。
  4. 新线程很容易创建。
  5. 线程可以对同一进程的线程进行相当大的控制;流程只能对子流程进行控制。
  6. 对主线程的更改(取消、优先级更改等)可能会影响进程中其他线程的行为。

三、多线程和多进程的使用场景

  • 多线程 - IO密集型操作
  • 多进程 - CPU(计算)密集型操作

四、使用多线程目的

多线程指的是,在一个进程中开启多个线程,即:如果多个任务共用一块地址空间,那么必须在一个进程内开启多个线程。

优点:

  1. 多线程共享一个进程的地址空间
  2. 线程比进程更轻量级,线程比进程更容易创建可撤销,在许多操作系统中,创建一个线程比创建一个进程要快10-100倍,在有大量线程需要动态和快速修改时,这一特性很有用
  3. 若多个线程都是cpu密集型的,那么并不能获得性能上的增强,但是如果存在大量的计算和大量的I/O处理,拥有多个线程允许这些活动彼此重叠运行,从而会加快程序执行的速度
  4. 在多cpu系统中,为了最大限度的利用多核,可以开启多个线程,比开进程开销要小的多。(这一条并不适用于python,python底层无法最大限度的利用多核)

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值