我们知道TCP服务端使用IO完成端口的方式是把Accept过程放在工作线程中
同时完成端口绑定四个线程,线程挂起等待内核通知(这里假定CPU是四核的)
当Accept接收到Socket之后将Socket绑定到完成端口中。完成端口由Windows内核处理
一旦任何一个socket接收数据完成,内核会通知闲置挂起的线程来处理。
可是我是想用UDP来做服务端,大家知道UDP服务端只有一个Socket接收数据(不像TCP多个连接套接字接收数据)。
如果将这个唯一的Socket绑定到完成端口。那么就算Socket在内核中接收数据完成之后通知闲置线程处理,我觉得也就需要一个线程来读取接收的数据(当然怎么处理这些数据交给线程池了,这里直说读取线程)。所以问题就是UDP服务端IO完成端口是否有必要绑定多个线程来接收数据?或者说其他三个线程是用不上的呢?
表达能力有限,在线等大侠指导
去下载supersocket源码来看吧。
谢谢 学习中