c++服务端程序基本结构
来源:互联网 发布:淘宝网狗窝 编辑:程序博客网 时间:2024/05/13 23:56
这里说一下,简单的说下自己几年来用c++写服务端程序的经验。。
基本架构:
tcp 一个线程来管理连接,如果是阻塞式的至少还得有一个线程来接收数据,非阻塞式的一般不用另外一个线程来接收数据了(性能瓶颈不在这个地方),如果是阻塞式得还得有N个逻辑线程,接收来的数据放入到队列由逻辑线程去操作。。
udp和上所说相同,不过有一点要说的是,可能有些人倾向于,创建一个邦定端口的udp socket,创建N个逻辑线程来用这一个socket边接收处理,理由是这样可以避免接收队列同步,优化性能。可我要说,这里的优化性能是相对的。比如,程序启动时这N个逻辑线程几乎同时(这个时间相对应用处理时间可以忽略不计)接收了N个包,你能保证这个N个线程中的一个在下个包到来时能够已经在recv上等待着吗,如果不是,那么这个时间UDP包超出网卡缓冲区时,呵呵,就被无情的丢弃了。缓冲队列延伸或者说扩充了网卡的缓冲区,省了那点同步队列的性能,冒着丢包的危险得不尝失吧。。
还有一个对内存分配上,能用缓冲尽量用缓冲(如内存池),频繁的new delete ,window下会有内存碎片的问题,linux下高手告诉我不会有这个问题,但是new的代价是高昂的,你可以VC下看看new做了什么,不仅有同步,还有其它一堆代码,这比你在内存池中获得到一个锁,然后从队列里取出一个指针,我估计要慢上不至一个数量级。
在服务端程序的时候会用到stl,比如 string vector等。。在用的时候预先分配下内存比自动分配性能要好些,reserve函数就是这个作用,因为底层用new来分配,一次new总比多次new要快些吧
只是些个人拙见,有什么高见可以一起探讨下。来邮件也可 gaoxiaotiger@sina.com
当然了,大家贴些代码也可一起研究下。。。
- c++服务端程序基本结构
- C程序的基本结构
- C程序的基本结构
- C程序的基本结构与简单规范
- C语言程序的基本结构--HelloWrold篇
- D3D程序基本结构
- L001-程序基本结构
- Arduino程序基本结构
- opengl 程序基本结构
- C#程序基本结构
- 程序的基本结构
- 程序的基本结构
- 【Java】程序基本结构
- JAVA基本结构程序
- window程序基本结构
- 程序的基本结构
- COBOL程序的基本结构
- Windows程序的基本结构
- Java Spring 入门笔记 - 正在写
- zoundry
- 日期函数精解示例
- hdoj 1003
- SetProp 和 GetProp
- c++服务端程序基本结构
- 小小的测试了一下Ycnd 3D
- json格式字符串到json对象转化
- 后天补考,可是只想看电脑书,看不进物理。。。
- Beginning Java AWT and Swing in NetBeans
- 在RFT中如何通过脚本获取已添加到某个脚本中的测试对象?
- OA
- 传智播客——javaWEB开发基础知识
- google ---- mapreduce介绍