从谈恋爱的角度理解各种 IO 模型

2018-10-28

首先,本文把女孩子的爱慕看作在恋爱关系中的资源,那么就可以把男孩子看作应用程序,女孩子看作系统内核,这是文章的大前提。

同步阻塞 IO

男孩子追求某个女孩子,并且专注于这个女孩子,在追到手或者失败前不会对其他女孩子有任何行动,这就是同步阻塞 IO。

同步非阻塞 IO

男孩子表白了某个女孩子,但是没有去追求她,等女孩子准备好之后就自然成了他女朋友,这就是同步非阻塞 IO。

IO 多路复用

多路复用分两种,一种是男孩子使用广撒网的方式同时撩多个妹子,相当于使用 select 方法轮询,当有女孩子愿意成为他的女朋友时则配对成功。 还有一种就就比较高级,男孩子只要向一群女孩子发出寻女友的信号,这当中就会有妹子自动找上门来当他的女朋友,这就是使用 epoll 方法的 IO 多路复用。这也就是为啥 epoll 比 select 性能要高的多的原因。

异步 IO

异步 IO 是所有 IO 模型中编程难度最高的一种,如果非要类比的话大概只能比作可能存在未来的 Open Relationship 吧,但实际上也不太好类比。