前面幾篇文章介紹的無論是TCP通信還是UDP通信都是阻塞式的,它們在執行recv或recvfrom時會在線程中等待,直到接收到信息爲止,所以在應用的時候一般都需要開闢子線程,在子線程裏專門做這類事情,不然它會影響主線程的運行。
系統提供三種網絡模型去處理這類需求,它們都基於異步模式,在異步模式下執行recv或recvfrom時不會在線程中等待,它會接着執行下去,當接收到消息時,系統提供了一套機制可以通知到應用程序,異步模式避免了開闢多餘的線程,也避免了線程卡死。
這三種網絡模型分別是:
- 消息選擇模型
- 完成端口模型
- 事件模型