对I/O阻塞、非阻塞;同步I/O、异步I/O的理解

I/O可分为两个过程

- 等待I/O就绪
- 执行具体I/O操作

关于同步I/O与异步I/O

- 同步I/O指当前进程或线程等待整个I/O过程结束,这包括等待I/O就绪和执行具体I/O操作
- 异步I/O指当前进程或线程提出I/O请求,然后直接返回,当I/O完成后以某种机制通知到该进程或线程

关于I/O阻塞与非阻塞

- 阻塞与非阻塞区别在于I/O的第一个过程,即等待I/O就绪;
- 阻塞I/O等待直到I/O就绪;非阻塞I/O在得知I/O尚未就绪时,
不再等待,当然 为完成I/O操作,需有某种机制重新询问I/O是否就绪,
以便执行后续I/O操作;

关于I/O中的同步与异步调用

- I/O调用的同步与否与I/O是否阻塞没有关系,同步调用简单来说就是该进程或线程必须等待整个I/O操作完成,而并不关心具体I/O细节
- 宽泛的说,I/O异步调用是指进程或线程进行I/O时不等待、不休眠,可以继续运行;两种常见的方式如下:
    1.  使用一个新的进程或线程执行I/O操作,而当前进程或线程可以继续做其它事情
    2. 使用非阻塞I/O;这种情况下进程或线程查询I/O是否就绪,
    若未就绪转为执行其它操作,若已就绪则执行具体I/O操作,
    此时若搭配DMA,借助中断机制,可达到更好的异步效果。

异步与同步

某些场景下,异步调用可以提供很好的响应性;
同步的等待过程会导致进程或线程休眠,异步调用可以使进程或线程始终处于繁忙状态,说到底这是当前进程或线程对CPU占用的问题,很多时候希望CPU总是处于繁忙状态,不过对于多个进程或线程的情形,当前进程或线程休眠后,CPU会立即调度其它Task。我觉得对于并行情况下的异步调用体现这样一种思想,用尽量少的进程或线程完成尽量多的CPU操作

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值