IO完成端口之我见--有说的不妥的地方请高手指出,指出就给分

renxianfu 2008-07-11 05:10:40
最近分析微软SDK中例子代码,结合一些网上的文字,写一些IO完成端口应用上的一些概念
例子程序参见:Microsoft SDK\Samples\netds\WinSock\iocp
现在网上很多人要什么代码,要找例子代码,微软的库最丰富,涉及到方方面面。

切入正题,主要是阐述一下基于此例子的一些问题
要把io完成端口真正使用起来,我个人觉得2个问题需要关注
1,连接建立成功后,申请该连接上下文内存空间CtxtAllocate,约大于8K
此问题原因在于动态分配/释放内存,在高数量并发连接情况下,这种成本是比较大的
2,工作线程WorkerThread
我觉得这不应该叫工作线程,容易让人误解,我就起名为IO完成通知线程;
我假设一种情况,当一个客户端连接过来,基于此连接的业务处理逻辑耗费服务器计算资源比较大,这时,就必须需要业务处理线程,即工作线程,此线程专门处理计算业务;如果频繁启动线程又违背了IO完成端口的初衷。

基于以上2个问题,增加两个队列在里面,应该在某种程度上来说可以提高性能:内存池和线程池

恳请高手批评指正!!
...全文
67 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
renxianfu 2008-07-14
  • 打赏
  • 举报
回复
非常感谢两位的参与指正及确认!
结贴了
renxianfu 2008-07-14
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 ahao2009 的回复:]
我想线程池还是要的吧,里面的线程主要是进行I/O读写等操作。
[/Quote]

我也是这个意思,它这里面线程池有两种,一种是为进行I/O读写操作,这类线程一般是cpu个数的2倍;另一类就是业务处理线程,这里面的线程应该比较多,会根据具体的业务进行调整

我主要从事桌面管理开发,网络开发也主要集中于局域网网络,最近在开始研究im等运营类系统,比较崇拜QQ服务器体系结构,目前正在积累一些技术性东西,所以研究的东西都是比较简单的例子,基于简单的例子提出一些改进想法,以便能应用到真实环境中;贻笑大方哈
ahao2009 2008-07-11
  • 打赏
  • 举报
回复
我想线程池还是要的吧,里面的线程主要是进行I/O读写等操作。
WinEggDrop 2008-07-11
  • 打赏
  • 举报
回复
[Quote=引用楼主 renxianfu 的帖子:]
最近分析微软SDK中例子代码,结合一些网上的文字,写一些IO完成端口应用上的一些概念
例子程序参见:Microsoft SDK\Samples\netds\WinSock\iocp
现在网上很多人要什么代码,要找例子代码,微软的库最丰富,涉及到方方面面。

切入正题,主要是阐述一下基于此例子的一些问题
要把io完成端口真正使用起来,我个人觉得2个问题需要关注
1,连接建立成功后,申请该连接上下文内存空间CtxtAllocate,约大于8K
此问题原因…
[/Quote]

1.那些都是最简单的例子,只是说明下IOCP是如何工作的,内存池是肯定要用的.
2.工作线程开始时就建好,直到程序结束才终止的,何来线程池之说?
前导课程:      《Java工程师系列课程》前4部 课程内容:           本课程是《Java工程师系列课程》的第8部,深入讲解Java文件和IO流的相关知识。以下是本课程的内容展示:课程共69个小节,为三个大部别是文件部、流部和实战项目部。文件部,就是左上角用红框框起来的这一部,主要讲解对文件以及文件夹的操作,第二部就是课程最重要的部,也是占课程比例最大的流部,所谓流就是用来读写数据的类。本课程用45小节的时间为学员详细讲解各种流的使用方法以及注意事项。第三部是实战项目部,就是右下角用蓝色方框框起来的部,在这一部中,将为大家讲解如何用swing技术配合课程中学习的IO流去完成一个记事本项目。实际上,除了课程最后的这记事本项目,课程中还穿插了一些规模比较小的实战项目,比如割文件、合并文件、给文件加密这样的小项目,以及压缩和解压文件项目。课程特点:1、讲解详细:不仅仅详细讲解了文件和流的各种用法,还讲解了很多使用过程中需要注意的细节。2、干货足量:每一个小节的时长基本都超过了20钟,能让学员学到很多知识。3、深入解决实际问题:视频课程不仅讲解理论知识,还深入解决了很多实际问题,例如:讲解如何通过程序判断一个文件的编码格式、如何设置文件读写权限等4、讲解经典算法:例如讲解缓冲区的管理机制,能让学员学到前辈们的精华思想5、理论结合实践:课程在文件压缩和解压、文件割以及合并、文件加密,这些小节都配有对应的实战项目,最后还有一个规模比较大的记事本项目6、手写代码:全程手写代码完成项目预期效果:      认真学习完本课程,学员可以深入掌握Java语言操作和管理磁盘文件的技术以及通过流读写数据的技术,实实在在提高实战水平,完成从菜鸟到高手的华丽转变。

18,356

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 网络编程
c++c语言开发语言 技术论坛(原bbs)
社区管理员
  • 网络编程
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧