并发、并行、同步、异步的概念

并发与并行

假设一个工厂,包含多个车间,一个车间包含多个工人和多个房间。

什么是cpu?工厂是时刻在运行的,因此可以理解cpu时刻在运行。

什么cpu的核数?假设把一个cpu比作一份电量的话,一份电量又只能满足一个车间运行,那么其他车间就得停止运行,所以一个cpu只能执行一个任务,必须等这个任务结束后才能分配电量给其他车间。

什么是进程?把车间理解为应用程序(流水线生产),即进程,那么一份电量只能给一个车间,也就是一个cpu只能执行一个应用程序(进程)。

什么是线程?车间的流水线需要多个工人才能完成任务,因此,把工人理解为线程,即一个进程可以有多个线程来完成计算任务,但一个车间又有许多房间(单个进程内的内存空间),那工人是可以共享这些房间资源,比如上厕所,吃饭的房间,因此可以理解为线程之间是可以共享进程内部的内存空间。

什么是互斥锁?车间的房间资源是有限的,比如厕所只能排队上,必须别人用完之后才可以让下一个人用,但万一有人还在上厕所就强行进行厕所怎么办?加把锁即可,让他必须等着。作用是防止多个线程同时读取同一块内存区域。

什么是进程的调度?以前是怎么实现一个cpu同时运行qq,微信,音乐的呢?实际上这是cpu通过时间片算法或者其他调度算法实现了交替运行,由于速度极快,人是感知不到的。

比如我开了三个软件,系统会给三个程序A、B、C开辟一个空间,在这空间里,给他们分配不同的运行时间,一个程序运行完后就会执行下一个,轮流着来,如果发现A程序这次时间不够,下次轮到他的时候就给他多分配一点时间。

所以实际上还是单任务的处理。

什么是并发?进程的调度实际上就是实现了并发,即多任务同时或者伪同时的执行。相当于吃饭吃一半,停下来去接电话,接完再吃饭,只是过程很快,做到了像同时运行。

什么是并行?工厂不可能只让一个车间运行,得同时让多个车间运行,但电量(cpu)不够怎么办,加多几个cpu,因此,并行只能在多核cpu下才能实现,所以并行就是多个进程同时进行。相当于我可以边吃饭边看电视。

总结:并行和并发都表示同时处理多个任务的能力,只不过不可能一直叠加cpu来实现并行,另外,多个应用程序分配cpu的时候是有可能都分配到同一个cpu,这是操作系统决定的,所以即使有多cpu也没办法保证做到并行, 所以主要是关注并发。

同步和异步

什么是同步?比如我上手机店买手机,服务员去仓库拿手机,要花一分钟,我等了一分钟后拿到手机才去买水喝。这个过程就是当程序遇到阻塞,需要等待的时候,程序会一直等待阻塞解除或者运行完后才进行下一步执行。

什么是异步?比如我上手机店买手机,服务员去仓库拿手机,要花一分钟,我趁这一分钟才去买水喝,然后回来刚好拿到手机。这个过程就是当程序遇到阻塞,需要等待的时候,程序会先执行其他任务,完成任务后回来,刚好上个任务也已经完成,可以提高效率。

 

  • 6
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

郑*杰

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值