首页 新闻 会员 周边

C# UDP做服务端使用IO完成端口的疑问

0
悬赏园豆:5 [已解决问题] 解决于 2015-03-13 20:05

我们知道TCP服务端使用IO完成端口的方式是把Accept过程放在工作线程中

同时完成端口绑定四个线程,线程挂起等待内核通知(这里假定CPU是四核的)

当Accept接收到Socket之后将Socket绑定到完成端口中。完成端口由Windows内核处理

一旦任何一个socket接收数据完成,内核会通知闲置挂起的线程来处理。

可是我是想用UDP来做服务端,大家知道UDP服务端只有一个Socket接收数据(不像TCP多个连接套接字接收数据)。

如果将这个唯一的Socket绑定到完成端口。那么就算Socket在内核中接收数据完成之后通知闲置线程处理,我觉得也就需要一个线程来读取接收的数据(当然怎么处理这些数据交给线程池了,这里直说读取线程)。所以问题就是UDP服务端IO完成端口是否有必要绑定多个线程来接收数据?或者说其他三个线程是用不上的呢?

 

表达能力有限,在线等大侠指导

大芝麻的主页 大芝麻 | 初学一级 | 园豆:4
提问于:2015-03-09 18:09
< >
分享
最佳答案
0

去下载supersocket源码来看吧。

收获园豆:5
arg | 小虾三级 |园豆:1047 | 2015-03-09 19:18

谢谢 学习中

大芝麻 | 园豆:4 (初学一级) | 2015-03-13 20:05
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册