IO模型

2017-02-11  本文已影响14人  uangianlap

IO的过程

一次IO都会有两个阶段:
❶ 等待数据,即数据从磁盘到内核内存.
❷ 复制数据,即数据从内核内存到进程内存.

5种IO模型

阻塞型         # 阻塞/非阻塞,关注的是调用结果返回前调用者的状态
非阻塞型
复用型
信号驱动型 
异步

阻塞型(block): .

调用结果返回之前,IO的两个阶段调用者被“挂”起.比如你去钓鱼,只是一直等着看,只到鱼上钩才处理.

非阻塞型(noblock)

调用结果返回之前,调用者不会被“挂”起。即IO第一阶段调用者是不会被阻塞的,但也是处于“盲”等待即无目的地等待(所以效率上未必强于阻塞型),只在第二阶段会被阻塞.比如你去钓鱼,放下鱼钩后你就在一旁玩手机或看书,只是偶尔才过去看一看鱼有没有上钩.

同步(sync)

调用者等待对方(被调用者 )返回消息

异步(async)

被调用者通过状态、通知或回调机制通知调用者被调用者的运行状态

复用型(多路输出)

select() 1024个限制 BSD
poll() sysv

信号驱动型

上一篇 下一篇

猜你喜欢

热点阅读