zoukankan      html  css  js  c++  java
  • socket网络编程中的同步,异步,阻塞式,非阻塞式,有何联系与区别?

    一、举个打电话的例子: 

      阻塞   block   是指,你拨通某人的电话,但是此人不在,于是你拿着电话等他回来,其间不能再用电话。同步大概和阻塞差不多。 

      非阻塞   nonblock   是指,你拨通某人的电话,但是此人不在,于是你挂断电话,待会儿再打。至于到时候他回来没有,只有打了电话才知道。即所谓的“轮询   /   poll”。 

      异步是指,你拨通某人的电话,但是此人不在,于是你叫接电话的人告诉那人(leave   a   message),回来后给你打电话(call   back)。 

    二、同步异步与阻塞和非阻塞是两种不同的概念来着 

      同步异步指的是通信模式,而阻塞和非阻塞指的是在接收和发送时是否等待动作完成才返回 

      首先是通信的同步,主要是指客户端在发送请求后,必须得在服务端有回应后才发送下一个请求。所以这个时候的所有请求将会在服务端得到同步 

      其次是通信的异步,指客户端在发送请求后,不必等待服务端的回应就可以发送下一个请求,这样对于所有的请求动作来说将会在服务端得到异步,这条请求的链路就象是一个请求队列,所有的动作在这里不会得到同步的。 

        阻塞和非阻塞只是应用在请求的读取和发送。 

    在实现过程中,如果服务端是异步的话,客户端也是异步的话,通信效率会很高,但如果服务端在请求的返回时也是返回给请求的链路时,客户端是可以同步的,这种情况下,服务端是兼容同步和异步的。相反,如果客户端是异步而服务端是同步的也不会有问题,只是处理效率低了些。

    参考文档:http://blog.csdn.net/hguisu/article/details/7453390

    http://www.cnblogs.com/zhangchaoyang/articles/2617188.html

  • 相关阅读:
    winserver-性能监视器计数器介绍
    winserver-性能监视器
    winserver-凭据管理(credential manager)
    The operation could not be performed because OLE DB provider "SQLNCLI11" for linked server "server_name" was unable to begin a distributed transaction.
    pandas-排序
    SQL SERVER-跟踪标记
    WinSCP
    SSL证书
    Powershell-修改文件夹权限
    fiddler 插件开发
  • 原文地址:https://www.cnblogs.com/laifu/p/3633044.html
Copyright © 2011-2022 走看看