数据就绪:
阻塞:
调用IO方法的线程进入阻塞状态 ssize_t recv(int sockfd, void *buf, size_t len, int flags);
非阻塞:
不会改变线程的状态, 通过返回值判断 int size = recv(sockfd, buf, 1024, 0);
size == -1, 出错了(EINTR, EAGAIN, EWOULDBLOCK)
size == 0,读取到数据的末尾, 对方连接关闭
size > 0, 读取到了多少的数据
数据读写:
同步
char buf[1024] = {0}; 从TCP接收缓冲区搬来
int size = recv(sockfd, buf, 1024, 0);
if(size > 0) {
buf
}
异步
异步IO接口 sockfd buf 通知方式(sigio信号) ----buf的数据准备完毕
aio_read()
aio_write() //Linux中的异步IO接口
处理IO的时候,阻塞和非阻塞都是同步IO,只有使用了特殊的API才是异步IO