首页
社区
课程
招聘
[讨论]IOCP服务器中AcceptEx是否采用单独线程处理的问题
发表于: 2008-11-16 13:00 7255

[讨论]IOCP服务器中AcceptEx是否采用单独线程处理的问题

2008-11-16 13:00
7255
我在参考了网络上的IOCP例程后,发现,网络上的IOCP程序,都是用一个单独线程来处理IOCP中的AcceptEx,且是用事件来等待连接
而我的IOCP中,没有采用此种等待事件的方法,我是直接在初始化的时候,给IOCP投递一定量的AcceptEx,当AcceptEx返回时,由线程池处理,再投递下一个AcceptEx,也就是说,没有AcceptEx专用线程,只有线程池,处理AcceptEx事务和其它socket事务.且,这个线程池设计的时候,为了能及时处理socket请求,不采用任何阻塞的函数

但问题就出在:
网络在的大量IOCP参考程序中,包括一些游戏大型网络服务器的源代码,全是用单独线程来处理AcceptEx,且全是用事件等待的方法,于是,我就开始怀疑我的模型中,是否存在一些隐藏的问题,但我不清楚会有什么隐藏性问题,请服务器设计大牛们指点一下。

重点是:
这个经得起实战考验的网络服务器,对AcceptEx的处理也是开单独线程,给了我的设计方法很大的打击,到底是开单独线程处理AcceptEx好,还是把AcceptEx放线程池中处理好,如果把AcceptEx放线程池中处理,会有什么隐藏的问题吗?

网络上的代码IOCP表示如下:
init
|
bind
|
投递一定量的AcceptEx
|
|---------开AcceptEx处理线程------------------------------------------------------------------------------
|                                                                                                           |
工作线程池处理ConnectEx,DisconnectEx,WSASend,WSARecv,                                                       AcceptEx处理线程

我的IOCP表示如下:
init
|
bind
|
投递一定量的AcceptEx
|
工作线程池,处理AcceptEx,ConnectEx,DisconnectEx,WSASend,WSARecv,不同于上面的是,把AcceptEx放到工作线程池中去处理,而不是单独开线程处理

[课程]Linux pwn 探索篇!

收藏
免费 0
支持
分享
最新回复 (1)
雪    币: 137
活跃值: (11)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
AcceptEx独立线程应该是应对突发大规模的连接进来,比如网络游戏公测
2008-11-17 23:09
0
游客
登录 | 注册 方可回帖
返回
//