并发编程系列学习笔记01(进程与线程)

本文介绍了进程作为应用程序实例和内存资源管理单位的角色,以及线程作为指令流执行载体和CPU调度基本单位的概念。讨论了并发与并行的区别,并概述了常见的CPU调度算法。多线程技术常用于异步操作,提升程序执行效率,如文件转换和UI程序。同时,文中指出了多线程在单核和多核CPU下的表现,并强调了线程调度和IO优化的重要性。
摘要由CSDN通过智能技术生成

进程与线程

 

进程与线程

  • 进程

    • 程序的基本组成:指令与数据
    • 指令的运行,需要数据都读写、指令加载至CPU,涉及到内存、网络、磁盘等设备
    • 进程就是用来加载指令、管理内存、管理IO
    • 进程可视为应用程序的一个实例,大部分程序可同时运行多个实例进程
    • 内存资源等分配的最小单位
  • 线程

    • 一个进程内可包含一个或多个线程
    • 线程即为一个指令流,将指令流中的指令按顺序交给CPU执行
    • CPU调度的最小单位
  • 两者对比

    • 多个进程间基本相互独立,而一个进程下的多个线程间拥有共享资源
    • 一台计算机的进程间通信称为 IPC,不同计算机之间的进程之间通信,需要依赖网络及共同协议,典型的技术为HTTP
    • 同一进程下的线程间通信相对简单,因为其共享进程内的内存空间

并行与并发

  • 任务调度器

    • 将CPU的时间片切分给不同线程使用
    • 由于切换时间非常短,给人感觉是同时运行(windows下最小约为15毫秒)
    • 单核CPU下,多个线程实际上还是串行执行
    • 多核CPU下,每个核心都可以同时调度运行线程,此时线程可以是并行执行
  • 并发

    • 同一时间应对多件事情的能力
  • 并行

    • 同一时间动手做多件事情的能力
  • CPU 常见调度算法

    • FIFO:先进先出
    • SJF:最短任务优先
    • STCF:最短时间完成优先
    • RR:基于时间片的轮询调度
    • MLFQ:多级反馈队列
    • 每种算法都有各自的优缺点,并不存在一种完美的调度策略
    • Everything in software architecture is a trade-off
    • 推荐阅读:带你探索CPU调度的奥秘

实际应用

  • 多线程技术可以让方法执行异步化,从而提升执行效率,例如指令读取磁盘文件耗时较长,此时线程若没有线程调度机制,该时间段内CPU只能等待,可能间接导致其他应用程序暂停
  • 常见案例:视频文件格式转换、Tomcat、UI程序等,都会创建一些新线程处理耗时较长的操作,而避免阻塞主线程执行

几个误区

  • 单核CPU,多线程虽不能提升程序运行效率,但也可避免一个线程占用CPU,导致别的线程没法执行
  • 多核CPU虽然可并行跑多个线程,但是否能提升执行效率,也并非绝对,具体视任务是否具备拆分及并行执行的必要性。
  • IO操作几乎不占CPU,比如拷贝文件如果使用阻塞IO,虽不占CPU,但需一直等待IO结束,故需非阻塞IO与异步IO技术的优化
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值