正文

一点感慨:作网络通信,其实就是在作内存(缓冲区)管理2010-07-08 21:15:00

【评论】 【打印】 【字体: 】 本文链接:http://blog.pfan.cn/lym51/51457.html

分享到:

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

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

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

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

  理想的情况是:

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

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

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

本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/sodme/archive/2005/09/27/490905.aspx

阅读(1421) | 评论(0)


版权声明:编程爱好者网站为此博客服务提供商,如本文牵涉到版权问题,编程爱好者网站不承担相关责任,如有版权问题请直接与本文作者联系解决。谢谢!

评论

暂无评论
您需要登录后才能评论,请 登录 或者 注册