阻塞与非阻塞、同步与异步的理解

1、使用场景

   1)阻塞与非阻塞的使用场景:I/O、多线程。

   2)同步与异步的使用场景:通信,多线程。   

2、具体理解

    在实际网络编程的环境中,一般是指线程的同步和异步与IO的阻塞与非阻塞,

    与系统底层的同步通信与异步通信无关,

    多线程的阻塞即多线程的同步,多线程的非阻塞即多线程的异步。

3、网络编程IO模型理解

    UNIX网络编程中,将IO模型划分为5种:(1)阻塞IO (2)非阻塞IO (3)信号驱动IO (4)IO复用 (5)异步IO

     按上面逻辑分析:

    1)阻塞IO实际就是同步线程阻塞I/O.

    2)非阻塞IO实际是同步线程非阻塞I/O。 

    3)信号驱动IO实际是同步线程非阻塞I/O。

    4)IO复用实际是同步线程非阻塞I/O。

    5)异步IO实际是异步线程非阻塞I/O。

4、网络编程IO模型比较

   在处理大量并发的网络收发数据时

  1)同步线程阻塞I/O,当前线程只能等收发操作完成才能继续执行

   2)同步非阻塞I/O,当前线程虽然不必等收发操作完成才能继续执行,但是还要参与具体收发过程中。

   3)异步线程非阻塞I/O,在通知收发操作后,线程可以处理其他操作,当本次收发接收后程序可以继续进行处理收发结果。

   4)异步线程阻塞I/O,阻塞IO影响到了线程异步效果。

5、网络编程IO模型效率

  阻塞IO<非阻塞IO<信号驱动IO


-------------------------------------------------------------------------------------------------------------------------

水之积也不厚,则其负大舟也无力;风之积也不厚,则其负大翼也无力。


你可能感兴趣的:(网络通信)