前面几篇文章介绍的无论是TCP通信还是UDP通信都是阻塞式的,它们在执行recv或recvfrom时会在线程中等待,直到接收到信息为止,所以在应用的时候一般都需要开辟子线程,在子线程里专门做这类事情,不然它会影响主线程的运行。
系统提供三种网络模型去处理这类需求,它们都基于异步模式,在异步模式下执行recv或recvfrom时不会在线程中等待,它会接着执行下去,当接收到消息时,系统提供了一套机制可以通知到应用程序,异步模式避免了开辟多余的线程,也避免了线程卡死。
这三种网络模型分别是:
- 消息选择模型
- 完成端口模型
- 事件模型