0
点赞
收藏
分享

微信扫一扫

白话IO模型的演进

瑾谋 2022-02-10 阅读 74

本文只是概括思路,具体概念具体底层机制还请看其他文章。
以餐厅点餐为例子。服务员是本例子的主角。

  1. 客人:IO请求
  2. 服务员:线程
  3. 炒菜时:IO未就绪状态
  4. 炒好菜:IO就绪了
  5. 上菜:程序处理IO请求的数据
  6. 后厨:内核
  7. 客人菜单:IO请求的数据

同步阻塞

每来一位客人,派一个新服务员把客人菜单送到后厨,炒好菜之前服务员寸步不离。

炒好菜后,服务员亲自上菜。

同步非阻塞

每来一位客人,派一个新服务员把客人菜单送到后厨,炒好菜之前服务员不断询问后厨菜是否炒好。

炒好菜后,服务员亲自上菜。

多路复用

每来一位客人,服务员会告诉后厨 “有人点了菜”,然后由同一个服务员不停地依次地询问后厨哪个客人菜单炒好了。

炒好菜后,服务员亲自上菜。(此时若其他客人菜单也炒好了,也得等他把当前客人的菜上好)

Reactor模式

每来一位客人,服务员会告诉后厨 “有人点了菜”,然后由同一个服务员不停地依次地询问后厨哪个客人菜单炒好了。

而现在:服务员分成了等菜员和上菜员,等菜员只需少量或者一个人来轮询后厨是否炒好菜,若炒好菜,指派上菜员给他们上菜。上菜员越多上菜越及时。上菜员不上菜时可以干别的工作。

reactor模式

举报

相关推荐

0 条评论