进程和线程

目录

线程

并发编程

进程和线程的区别

1.进程调度

2.系统开销

3.并发执行

4.资源分配

进程和线程的关系

安全问题

 1. 线程模型

 2.进程模型


线程

并发编程


1.单核 CPU 的发展遇到了瓶颈. 要想提高算力, 就需要多核 CPU. 而并发编程能更充分利用多核 CPU资源。
2.有些任务场景需要 "等待 IO", 为了让等待 IO 的时间能够去做一些其他的工作, 也需要用到并发编

cpu进入了多核心的时代 要想进一步提高执行速度就要充分的利用CPU的多核资源

多进程编程 已经可以解决并发编程的问题,但是又由于多进程创建、销毁、调度一个进程系统开销大。


 进程和线程的区别

1.进程调度

  (进程是系统分配资源的最小单位,线程是系统调度的最小单位)

       操作系统 实际调度的时候 是以线程为单位调度的(进程调度相当于每个进程里面只有一个线程这样的情况)如果每个进程有多个线程了,每个线程是独立在CPU上调度的 =>线程是操作系统调度执行的基本单位
2.系统开销

      在创建、销毁、调度一个进程时候,系统为进程的资源分配回收上开销大,而线程也叫“轻量级进程”解决并发编程问题的前提下,让创建 销毁 调度都的速度更快一些

3.并发执行

      不仅进程之间可以并发执行,同一个进程的多个线程之间也可以并发执行,每个线程也有自己的执行逻辑(执行流)

4.资源分配

       系统在运行的时候会为每个进程分配不同的内存空间,而对线程来说,系统除了CPU外,不会为线程分配内存,线程之间只能共享资源。同一个进程里多个进程之间,共用了进程的同一份资源(主要指的是内存和文件描述符)

内存是指:你线程1new的对象 再线程2,3,4里边都可以直接使用

文件描述符是指:线程1打开的文件再线程2,3,4里都可以直接使用


进程和线程的关系 

       进程和线程属于 一对多关系,一个进程可以包含多个线程(不能没有) 只有第一个线程启动的时候 开销比较大 后续线程就容易了

      一个线程也是对应一个PCB 一个进程里面可能是对应一个PCB也可能是对应多个了

PCB里的状态,上下文,优先级,记账信息,都是每个线程有自己的,各自记录各自的

但是同一个进程里的PCB之间,pid是一样的内存指针文件描述符也是一样


安全问题          

(多线程会提高效率但不如多进程安全)

线程模型

    天然是资源共享的,多线程强同一个资源(同一个变量)非常容易触发线程安全问题

进程模型

     天然是资源隔离的不容易出发 进行进程间通信的时候 多个进程访问同一个资源 可能会出现问题

 

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值