同步/异步与阻塞/非阻塞的理解

本文通过老王烧开水的故事,生动地解释了同步与异步、阻塞与非阻塞的概念。同步关注消息通知机制,而异步强调调用方无需等待结果;阻塞意味着线程等待结果,非阻塞则允许线程在等待期间执行其他任务。效率上,异步非阻塞最高,同步阻塞最低。
摘要由CSDN通过智能技术生成

同步/异步的概念

  1. 同步:已知调用结果后才将调用返回
  2. 异步:不需要等待调用结果即可返回,有调用结果后,被调用方会“通知”调用方

阻塞/非阻塞的概念

  1. 阻塞:调用方在收到调用结果前,当前线程会被挂起,一直处于等待消息通知,不能够执行其他业务。
  2. 非阻塞:调用方在收到调用结果前,可处理其他事务

同步异步就是消息通知机制,阻塞和非阻塞在进程(线程)等待消息通知时的状态。

故事:老王烧开水
出场人物:老王,两把水壶(水壶,响水壶)

  • 同步阻塞: 效率是最低的。
    老王用水壶烧水,并且站在那里(阻塞),不管水开没开,每隔一定时间看看水开了没(同步->轮询)。
  • 同步非阻塞: 实际上效率是低下的。
    老王用水壶烧水,不再傻傻的站在那里,跑去做别的事情(非阻塞),但是还是会每个一段时间过来看看水开了没,没开就继续去做的事情(同步->轮询)。
  • 异步阻塞: 效率高
    老王用响水壶烧水,站在那里(阻塞),但是不再去看水开了没,而是等水开了,水壶会自动通知它(异步,内核通知进程)。
  • 异步非阻塞: 效率更高,注册一个回调函数,就可以去做别的事情。
    老王用响水壶烧水。跑去做别的事情(非阻塞),等待响水壶烧开水自动通知它(异步,内核通知进程)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值