我是学渣。但我想进步。

本文是面试我的牛人问我的。你知道什么是堵塞、非堵塞和同步、异步IO么?自觉得是分布式系统程序猿的我居然不知道。学习吧。

首先介绍堵塞IO和非堵塞IO:

堵塞IO:是指说程序等待socket文件的事件的时候。是处于堵塞状态的(这之中的过程是,线程进入suspend状态,被增加事件等待队列,退出CPU,将数据写回内存,简而言之就是linux内的schedule过程。)如图所看到的:、

举个样例,这就像是:你去饭店点一份午餐打包带走。从你去開始饭店就開始准备饭菜,你就在那里等着。直等到菜品齐全拿着回家吃。

这之中菜不做完,你就不会走。也不会干其它事情,就是堵塞在饭店等待事件。

非堵塞IO:

通过名称能够知道。这时与堵塞IO全然对立的方式,就是在等待IO事件的时候,仅仅是查询当前IO请求是否就绪,假设就绪则開始工作处理数据。假设没有就绪,则直接返回没有就绪。

举个样例:你去饭店买菜,告诉饭店你要的菜品后。饭店须要一段时间才干准备好你须要的饭菜。这时你还想去取钱,那你就先去取钱,然后过一会再来问菜做好没。假设做好了,那就拿菜走人,假设没做好。那就再去干点其他的事情,过一会再来问。这就是非堵塞的等待事件的发生。

你不会在饭店那里一直等待,仅仅会一次一次的去询问能否够拿菜了。

总结堵塞和非堵塞IO。它们之间的主要维度是堵塞还是不堵塞在当前的事件上面。堵塞就是在事件没有准备好的情况下。主动的schedule,让出自己的CPU时间,直到符合条件的事件出现(或者超时)。

非堵塞则是不会schedule,不会让出自己的CPU时间,直接返回成功或者没成功,由程序自由选择接下来的时间做什么,循环下次继续检查事件的就绪情况。

以下来介绍同步IO和异步IO。

同步IO:

同步IO是指在数据准备好以后,用户线程须要对数据进行自己的操作以达到效果,也就是同步IO是仅仅接收数据事件到来的通知。至于数据须要怎样处理。则须要另行商量。

举样例:你去餐厅买饭。餐厅会通过某种方式告知你,菜品准备好了。你就会到餐厅去取菜。这就是同步IO。

异步IO:

异步IO的意思是说,在事件的等待过程中。事件准备好了也不会告诉你,而是通过你们之前约定的数据处理方法进行处理。

在处理结束后再告知你完毕了。

举样例来说就是:你给饭店下单。然后告诉饭店说做好了就给我送到家里(你的地址)。

这样你就能够继续在家里玩游戏,看电视了。等菜品送到了,自然会通知你送到了。

由此可见。同步IO和异步IO的主要关注维度是数据准备好后的流程。同步IO是准备好了通知你,你再处理。

异步IO是事件准备好了不通知你。用之前定下的规则处理成功后再告诉你。

好好学习,天天向上。凡是。

。。凡是。。。。

最新文章

  1. OpenStack虚拟机DHCP获取不到IP地址排查
  2. Javascript之旅——第十一站:原型也不好理解?
  3. css 描述css reset的作用和用途。
  4. POJ 3484
  5. Apache POI 解析 microsoft word 图片文字都不放过
  6. UI1_Calayer
  7. CodeForces 456D&455B--A Lot of Games(Trie+博弈)
  8. mvn开发可执行的java程序
  9. 前端----表格的具体使用(jquery)
  10. MySQL恢复备份读书笔记
  11. WWDC 2014 Session 205/217 Extension 注意事项
  12. HTML与XHTML差额
  13. Linux下防火墙设置
  14. java开发之阿里云对象存储OSS和云数据库Memcache的使用
  15. BZOJ4423 Bytehattan
  16. android离线缓存技术
  17. 从壹开始前后端 [vue后台] 之二 || 完美实现 JWT 滑动授权刷新
  18. react-native不是内部或 外部命令,也不是可运行的程序或批处理文件
  19. 【APIO2018】铁人两项
  20. 解决64bit不能连接access的问题

热门文章

  1. vs code golang代码自动补全
  2. bzoj2763: [JLOI2011]飞行路线(分层图spfa)
  3. 微信小程序获取当前所在城市
  4. CAS配置(3)之restful-api接入接口
  5. 【专题】概率期望DP
  6. iOS 点击事件传递及响应
  7. POJ 1753 DFS
  8. CentOS7.5 AndroidStudio Debug报错:insufficient permissions for device
  9. 转:Fiddler抓包工具总结
  10. JavaScript小技巧总结