首    页 界面/窗口 网络/通讯 数据库 组件开发 图像/多媒体 NET/Web 其它技术 源码下载 资料下载 软件共享 软件外包 曲艺杂谈
栏目导航:  首    页  |  网络/通讯  |  高性能网络服务器


一点感慨:作网络通信,其实就是在作内存(缓冲区)管理


原作者:sodme    源出处:CSDN    发布者:施昌权    发布类型:转载    发布日期:2009-02-23

      

   最近看代码,感慨很多。作一个高性能的网络通信模块,除了要选择高性能的网络通信模型之外,同样重要的就是:你的内存(缓冲区)是如何管理的。

   在网络通信模型方面,现在的技术都是比较成熟的了,在win下使用iocp,在linux下使用epoll。它们的使用方法,相对来说,还是比较有章可循的。

   内存之于高性能,大致有以下两个方面需要特别注意:
   1.尽可能地减少内存的动态申请和释放;
   2.尽可能地减少内存数据的复制;

   解决第1个问题,我们可以使用内存池;而解决第2个问题,就会牵涉到程序的架构设计了。

   理想的情况是:

   在数据接收方面,一个包,只要从网络模块接收下来后,直到它被上层逻辑使用完毕之后才会丢弃,而不应该在网络接收模块和上层逻辑模块之间增加任何的有关复制该包的行为和操作;

   在数据发送方面,发送的时所用的缓冲区,不应该是即时申请的,而是从内存池中取的可用缓冲区,用完后再放回。

   而我们看到,对于前者,也只有在架构方面作一些精巧布局才能达到目的。


关于我们 版权声明 广告服务 联系我们 友情链接 加入收藏
站长:施昌权    Email:scq2099yt@163.com    MSN:scq2099yt@live.cn    QQ:14046300    本站QQ群:67202409
Copyright © 2008     卓为VC(www.joyvc.cn)    All Rights Reserved    建议分辨率 1024×768
本站由施昌权制作维护
京ICP备09012297号