阻塞与非阻塞、同步与异步
一个网络IO过程主要分两部分:数据准备(数据就绪)、数据读写。
一、数据准备阶段(数据就绪阶段)
数据准备阶段分为两种情况:阻塞接收与非阻塞接收。
阻塞接收:调用IO方法的线程进入阻塞状态。
非阻塞接收:不会改变线程的状态,通过返回值判断。
二、数据读写阶段
数据读写也分为两种方式:同步写和异步写。
同步写:应用程序自己负责读写过程。
异步写:操作系统负责读写,读写完毕通过通知的方式告知应用程序。
在处理IO的时候,阻塞和非阻塞都是同步IO,只有使用了特殊的API才是异步IO。