还有异步与非阻塞的区别这些概念有点不明确

解决方案 »

  1.   

    阻塞和非阻塞很好区别,所谓阻塞就是系统调用在IO调用完成时才返回,被阻塞的进程处于睡眠状态。 
    非阻塞IO是指不管系统调用是否完成都立刻返回,不会导致进程挂起。服务器的设计中都使用非阻塞IO,用于响应高并发的连接请求。 
    这里还有个概念就是IO复用,其实是阻塞到select或poll等这样的系统调用,而不是真正的read或write。 同步和异步IO:下面是POSIX的定义 
    所谓同步IO就是请求进程阻塞到直到IO操作完成时。阻塞IO和非阻塞IO都是同步IO。 
    异步IO就是IO操作不会引起请求进程的阻塞。 
      

  2.   

    http://www.fawonline.com.cn/blog/?p=233
      

  3.   

    同步异步是指客户端是否等待服务器的允许发送指令!!在服务器端实现是否同步!!
    阻塞,非阻塞,是指接收数据是否等待!!一般来说,非阻塞通过判断socket的状态来决定是否接收数据!!阻塞是一直等待数据的到来,可以选择超时时长!!
      

  4.   

    阻塞是指的单一函数的操作模式,对send、connect等等这样的比较耗时或者是效率不定的函数,一般都分阻塞和非阻塞调用。同步和异步指的一种函数调度的方式。例如一个函数说是同步调用方式,可以理解成就是单进程调度模式几乎就等同于阻塞调用,只有这个函数内部处理完了,才能进行下一步。异步调度,本质就是多线程,等这个函数内部的事情处理完了就告诉你。所以异步调用,必须存在一个回调接口。或采用消息或采用callback等等。同步和阻塞几乎就是一样的,但是同步可以表述一种“封装”。而阻塞仅仅适用于函数。
    异步和非阻塞有点区别,因为异步一定涉及两个以上的函数(一个是调用函数,一个是回调函数)。而非阻塞同样只适用于函数,因此不涉及回调。