同步异步 阻塞非阻塞

参考:http://apps.hi.baidu.com/share/detail/21570805#

讲的很不错,第一次看的时候没有深入理解,今天有了自己的理解,记录一下。


同步/异步和阻塞/非阻塞其实是没有直接联系的,虽然表面上看起来有一定相似的效果。

对于同步和异步来说,它是编码的一种的模型,可以运用回调函数callback来实现,它只和你的application有关。而阻塞非阻塞是关乎IO的,所谓非阻塞就是I/O操作可以立即返回。

我参与的项目中很多地方都用到了这一点,基本上都用到了异步,但是有的是阻塞有的是非阻塞。

为什么会有这么多模式(同步阻塞、同步非阻塞、异步阻塞、异步非阻塞),其实并没有说是哪个有绝对的优势,依照不同的情况不同的需求,选择不同的模式。

下面我们具体说说:

假如你不想让你的代码阻塞在某个地方,比如在等待某个用户键盘输入的过程中,你的代码可以先做其它的事情,推荐使用异步模型,可以用callback,这样不会影响别的操作请求,如果阻塞也是在阻塞在callback中。假如有socket操作,并且是阻塞的,那就只好等到select到socket解除阻塞,如果想要做成非阻塞的,可以设置sock.setblocking(0),但是你怎么知道什么时候真正的回应到达了呢,这种情况下你可以做个标记,当你读到回应的时候根据标记找到回调函数。(回调函数真的很有用)如果一个应用程序中有很多I/O操作,最好使用异步模型。

也不知道表达清楚没,就当讲给自己听....

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值