以下为个人理解(有点片面,但适合初学者,或后期思考),读者不理解或者我误导了,请直接评论,当天回复
场景:厕所排队
一个厕所并且只有一个坑位,有十几个人排队,你排在第二的位置,你一离开,就得重新排队!
建议了解了io多路复用模型再来看
1.你需要一直盯着厕所门,查看里面的人是否搞定出来了.(BIO)
你自己在这期间不能离开干其他事.比如不能在座位上打代码
(这里极为容易混淆同步与阻塞关系)
自己反复查看->同步
坑位一直被占用的状态,需要等待坑位被"释放"->阻塞
同步阻塞
大白话:自己去查看是否有空位(同步),厕所不能够为我提供坑位,等待有人出来(阻塞)
2.你还是需要一直盯着厕所门,查看里面的人是否搞定出来了.(没人用这个)
但是你找了一个同事帮你看着位置,厕所里的人搞定了,同事会过来通知你.(不是IO多路复用)
你可以在这期间能离开去干其他事.比如可以继续呆在座位上打代码
(这里极为容易混淆异步与非阻塞关系)
自己不用反复查看,其他人通知你->异步
坑位一直被占用的状态,需要等待坑位被"释放"->阻塞