Socket之同步与异步,阻塞与非阻塞

        同步异步与阻塞非阻塞没有必然的联系,很多时候我们会错误认为同步=阻塞,异步=非阻塞。其实导致这种错误观点的原因是同步的时候大多以阻塞的形式表现出来的,异步的时候以非阻塞的形式表示的。

         首先我们区分一下他们的概念。

1、  同步与异步:是一种消息通知机制,不是消息处理机制(消息处理是用户来自己完成的,即用户根据自己的需要来自己处理这些消息,消息通知机制只是通知用户是否有消息达到)。其中:

        同步:是由用户(处理消息者)自己去等待消息是否被触发。

        异步:是由触发机制来通知用户(处理消息者)。

2、  阻塞与非阻塞:是一种程序调用(例如I/O操作)等待返回消息时的状态,其中:

        阻塞:程序调用在得到结果之前,当前线程会被挂起,只有当得到结果之后,程序调用才会返回。(由于挂起之后当前线程不会占用CPU的资源,所以从CPU的角度看,效率是高的。但从当前程序的角度看,其效率就值得再分析了)

        非阻塞:程序调用即使在不能立即得到结果时,也能立刻返回,只是返回值与得到结果时的返回值不一样罢了。它是不会将当前进程挂起的。

         那么,我们的程序就可以有四种组合,即:同步阻塞、同步非阻塞、异步阻塞、异步非阻塞。

1、  同步阻塞:

2、  同步非阻塞

3、  异步阻塞

4、  异步非阻塞

 

 

 

 

【参考资料】

1、http://blog.csdn.net/pcsuite/article/details/6190995  socket同步异步阻塞非阻塞区别

2、https://www.ibm.com/developerworks/cn/linux/l-async/ 使用异步 I/O 大大提高应用程序的性能

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值