linux io模型

1.同步io(synchronousio):

   同步和异步,这两个概念与消息的通知机制有关。也就是同步与异步是从消息通知机制角度来说的。

举例来说,当funcA 调用 funcB时,funcA必须等待funcB执行完成返回后,funcA才会继续执行,二者保证顺序执行

2.异步io(asynchronous io):

         异步跟同步恰恰相反,当funcA调用funcB时,funcB直接返回,并没有返回结果,当funcB执行完成后,通过(状态),(通知),(回调)来通知funcA。即当funcA发出funcB的消息通知后,funcB的执行就和funcA无关了,二者执行顺序是无法保证的。

3.阻塞io (blocking io):

       阻塞和非阻塞, 这两个概念与(程序在等待消息通知)时的状态有关。

怎么理解这个等待消息时候的状态呢,当线程发出一个消息通知后,这个消息可能是同步,也可能是异步的,这个时候,当前线程在等待这个消息的通知时就处于等待消息的状态中,这个时候,当前线程如果选择阻塞状态,那么就是线程挂起。

所以这种阻塞状态,同时就对应有同步阻塞,异步阻塞。

同步阻塞:当funcA调用funcB时,当前调用线程处于挂起状态,不执行其他业务,等待funcB,直到funcB执行完毕返回结果,当前调用线程才继续执行

异步阻塞:当funcA调用funcB时,当前调用线程处于挂起状态,不执行其他业务,等待funcB,funcB直接返回,没有返回结果,当前调用线程继续执行,当funcB执行完成后,通过状态,通知,回调来通知调用者。

4.非阻塞IO(non-blocking IO)

          非阻塞对应于阻塞,即在等待消息返回的时候,当前线程仍然能处理其他业务

同步非阻塞:当funcA调用funcB时,当前调用线程处于激活状态,可以执行其他业务,同时等待funcB,直到funcB执行完毕返回结果后,funcA继续执行

异步非阻塞:当funcA调用funcB时,当前调用线程处于激活状态,可以执行其他业务,同时等待funcB,funcB直接返回,没有返回结果,funcA继续执行,当funcB执行完成后,通过状态,通知,回调来通知调用者。

所以这种阻塞状态,同时就对应有同步非阻塞,异步非阻塞。

5.多路复用IO(multiplexing IO)

           I/O多路复用就是通过一种机制,一个进程可以监视多个描述符,一旦某个描述符就绪(一般是读就绪或者写就绪),能够通知程序进行相应的读写操作,目前支持I/O多路复用的系统调用有 select,pselect,poll,epoll

6.信号驱动式IO(signal-driven IO)

          信号驱动式I/O是指进程预先告知内核,使得当某个描述符上发生某事时,内核使用信号通知相关进程。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值