IO完成端口之我见--有说的不妥的地方请高手指出,指出就给分
最近分析微软SDK中例子代码,结合一些网上的文字,写一些IO完成端口应用上的一些概念
例子程序参见:Microsoft SDK\Samples\netds\WinSock\iocp
现在网上很多人要什么代码,要找例子代码,微软的库最丰富,涉及到方方面面。
切入正题,主要是阐述一下基于此例子的一些问题
要把io完成端口真正使用起来,我个人觉得2个问题需要关注
1,连接建立成功后,申请该连接上下文内存空间CtxtAllocate,约大于8K
此问题原因在于动态分配/释放内存,在高数量并发连接情况下,这种成本是比较大的
2,工作线程WorkerThread
我觉得这不应该叫工作线程,容易让人误解,我就起名为IO完成通知线程;
我假设一种情况,当一个客户端连接过来,基于此连接的业务处理逻辑耗费服务器计算资源比较大,这时,就必须需要业务处理线程,即工作线程,此线程专门处理计算业务;如果频繁启动线程又违背了IO完成端口的初衷。
基于以上2个问题,增加两个队列在里面,应该在某种程度上来说可以提高性能:内存池和线程池
恳请高手批评指正!!