并行与并发

本文探讨了单核CPU下线程的串行并发原理,强调了多核CPU的并行优势。深入剖析了同步与异步的概念,以及多线程在提高程序效率中的应用,特别关注了IO操作中的阻塞与非阻塞IO。关键概念包括任务拆分、并行执行和效率评估。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

并行与并发

并发

单核CPU下,线程实际还是串行执行的。操作系统中有一个组件叫做任务调度器,将CPU的时间片(window下时间片最小约为15毫秒)分给不同的程序使用,只是由于CPU在线程间(时间片很短)的切换非常快,人类感觉是同时运行的
总结一句话:微观串行,宏观并行

一般会将这种线程轮流使用CPU的做法成为并发(concurrent)

  • 微观上是串行的,宏观上是并发的

并行

多核CPU下,每个核都可以调度运行线程,这时候的线程可以是并行。

总结
  • 并发(concurrent)是同一时间应对(dealing with)多件事情的能力
  • 并行(parallel)是同一时间动手做(doing)多件事情的能力

同步与异步

从方法调用的角度来讲,如果

  • 需要等待结果返回,才能继续执行的就是同步
  • 不需要等待结果返回,就能继续执行的就是异步

多线程的应用

  • 应用之异步调用
  • 应用之提高效率
结论
  • 单核cpu下,多线程不能实际提高程序运行效率,只是为了能够在不同的任务之间切换,不同线程轮流使用cpu,不至于一个线程总占用cpu,别的线程没法干活。
  • 多核cup可以并行跑多个线程,但能否提高程序运行效率还是要分情况的
    • 有些任务,经过精心设计,将任务拆分,并行执行,当然可以提高程序的运行效率。但不是所有的计算任务都能拆分
    • 也不是所有的任务都需要拆分,任务的目的如果不同,谈拆分和效率没啥意义。
  • IO操作不占用cpu,只是我们一般拷贝文件使用的是【阻塞IO】,这时相当于线程虽然不用cpu,但需要一直等待IO结束,没能充分利用线程。所以才有后面的【非阻塞IO】和【异步IO】优化。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值