网络编程(笔记四)

一、阻塞非阻塞/同步异步概念

涉及的角色:调用双方/双方的执行者

 

 

 

阻塞和非阻塞是对同一个线程来说的,在某个时刻,线程要么处于阻塞,要不处于非阻塞。

同步和异步是指:发送方和接收方是否协调步调一致。

二、BIO  ---阻塞IO的含义

  1. 阻塞(blocking)IO:资源不可用时,IO请求一直阻塞,直到反馈结果(有数据或超不可用时)
  2. 非阻塞(non-blocking)IO:资源不可用时,IO请求离开返回,返回数据标识资源不可用。
  3. 同步(synchronous)IO:应用阻塞在发送或接收数据的状态,直到数据传输成功或返回结果。
  4. 异步(asynchronous)IO:应用发送或接收数据后立刻返回,处理结果通过回调来通知。

三、5种IO模式

  1. 阻塞IO模型:Socket  面向字节流。
  2. 非阻塞IO模型:面向缓冲API。
  3. IO复用模型:linux底层:select,poll:返回后遍历文件描述符来获取已经就绪的socket;epoll,kqueue:不需要遍历,注册了一个事件函数。
  4. 信号驱动IO模型
  5. 异步IO模型:AIO事件模型,IOCP支持比较。
原文地址:https://www.cnblogs.com/libinhyq/p/15394094.html