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<IO复用<异步IO
-------------------------------------------------------------------------------------------------------------------------
水之积也不厚,则其负大舟也无力;风之积也不厚,则其负大翼也无力。