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

mie

 
 
 

日志

 
 

boost之threadpool的性能问题  

2014-07-09 10:55:09|  分类: GIT |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

        前面提到,libuv的threadpool,因为其任务队列存在bug,会导致崩溃。所以,我该用了threadpool,并且使用的是summer099修复了内存泄漏的版本。

        经过测试,threadpool在线程池的线程数量很少时,效率非常高!很明显,libuv的线程池在调度任务时速度并不是很快,原因就在于加锁了。那么,为什么这个基于boost实现的threadpool为什么速度会这么快呢?

       我简单看了一下其实现。它采用了_interlockedbittestandset函数来实现锁,msdn的说明是“The operation is atomic.”,原子操作,效率上自然比libuv的临界区的要快。这种利用原子操作自实现的锁和标准的API相比,真的就好吗?

       继续测试。当线程数达到6个以上时(单CPU八核),其速度非常慢,电脑近乎卡死。可见,其性能并不稳定。这也许就是boost没有录入threadpool这个线程池库的原因吧。

      看来只能放弃这个threadpool了。

 

     刚刚登录,看到一哥们回复了关于CREATE_SUSPENDED创建进程时导入表的dll是否被完全加载的问题。我比较厌烦过于自以为是的人,刚好这哥们就是,所以我直接拉黑了。。。blog本来就是清净之地,偏偏经常有人跑过来骂,或者是自以为是地教育别人。。(貌似我自己也很自以为是,所以不太喜欢和自以为是的人打交道,不过我在别人说出问题的时候,都会去查一下,这哥们回复了两次,我就写代码分析了两次,真是浪费了不少时间)

    CREATE_SUSPENDED参数创建的进程,默认只会加载ntdll,当然这是针对xp系统。在vista和win7下,其加载的dll会多几个!我曾经花了大量时间研究dll注入,所以对这些东西自然比较清楚,和我争论这个实在是浪费我的时间和心情。当然,有的外挂就是CREATE_SUSPENDED参数创建的进程,然后CreateRemoteThread来注入dll,这个时候dll会被加载,所以往往被误以为在此之前,导入表的dll被加载,其实不然。其他的dll被加载,也仅仅是在注入的dll加载过程中被加载的!!!

 

By:zhanyonhu

  评论这张
 
阅读(761)| 评论(0)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

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

页脚

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