注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

mie

 
 
 

日志

 
 

一次无锁服务器程序开发的尝试  

2013-07-22 00:26:54|  分类: 默认分类 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |
      此前也曾写过几个简单的服务器模型,但是应用中性能表现并不高,于是,此次倾向于开源服务器模型。由于ace过于庞大,所以我并没有采用它,而是使用了libevent。
      使用了libevent之后,问题就出来了。多线程问题,互锁问题,等等,程序demo完成后,测试,性能表现也不高。另外一个问题是,libevent在windows下默认是select模型。而select的效率是非常低下的,尤其是windows平台的select,一次只能是64个socket。 libevent虽然支持了超过64的并发连接,但是,再优秀的封装,也还是基于低下的select模型的。
      改用开源iocp代码。但是这份iocp的代码效率不高,每个连接都使用了一个临界区,显然,这种设计是很难满足性能需要的。
      就这样曲曲折折,又折了回来。我开始自行编写iocp服务器。而此前我的iocp代码也同样存在性能不高的问题,得重写。
      这次,采用了无锁方式实现。起初,因为需求对内存碎片的要求不高,我更关注速度方面的性能,所以内存分配采用了new delete方式。但问题来了,程序不断提示内存delete之后被访问。我期望使用内存池来定位解决,但是,使用内存池,就得大范围地修改,或者加锁
      无锁方式不得不面临delete之后的内存非法访问,而其速度确实非常之快,以至于我实在不愿意放弃。


66小助手-屏幕录像软件 下载测试:点击下载   (晚上7点至11点开放下载)


  评论这张
 
阅读(425)| 评论(1)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2016