同步异步阻塞非阻塞详解

本文通过厕所排队的场景,形象地解释了同步、异步、阻塞和非阻塞的区别。同步与异步关注的是消息通信机制,同步需要等待,异步则不需要;阻塞和非阻塞关注的是程序在等待调用结果时的状态,阻塞会一直等待,非阻塞则不会。同步阻塞如BIO,同步非阻塞如NIO,异步阻塞如单坑位厕所,异步非阻塞如多坑位厕所加同事通知。

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

以下为个人理解(有点片面,但适合初学者,或后期思考),读者不理解或者我误导了,请直接评论,当天回复

场景:厕所排队

一个厕所并且只有一个坑位,有十几个人排队,你排在第二的位置,你一离开,就得重新排队!

建议了解了io多路复用模型再来看

 

1.你需要一直盯着厕所门,查看里面的人是否搞定出来了.(BIO)

你自己在这期间不能离开干其他事.比如不能在座位上打代码

(这里极为容易混淆同步与阻塞关系)

自己反复查看->同步

坑位一直被占用的状态,需要等待坑位被"释放"->阻塞

同步阻塞

大白话:自己去查看是否有空位(同步),厕所不能够为我提供坑位,等待有人出来(阻塞)

 

2.你还是需要一直盯着厕所门,查看里面的人是否搞定出来了.(没人用这个)

但是你找了一个同事帮你看着位置,厕所里的人搞定了,同事会过来通知你.(不是IO多路复用)

你可以在这期间能离开去干其他事.比如可以继续呆在座位上打代码

(这里极为容易混淆异步与非阻塞关系)

自己不用反复查看,其他人通知你->异步

坑位一直被占用的状态,需要等待坑位被"释放"->阻塞

评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值