首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

问个boost线程池分配任务的有关问题

2012-11-09 
问个boost线程池分配任务的问题C/C++ codeclass D{}class A{work( D d)}class B{A a// 代码1for ( int

问个boost线程池分配任务的问题

C/C++ code
class D{};class A{    work( D d);};class B{    A a;    // 代码1    for ( int 1 = 0; i < 100; i++ )    {        D d;//d计算得到,有内存的申请释放        m_threadpool.schedule(boost::bind(&A::work,&a,d));    }    // 代码2    vector<D> vd;    for( int i = 0; i < 100; i++ )    {        D d;//d计算得到,有内存的申请释放        vd.push_back(d);    }    for( int i = 0; i < 100; i++ )    {        m_threadpool.schedule(boost::bind(&A::work,&a,vd.at(i)));    }}

开100个线程,代码1和2不同时执行,测试得到的结论:
1、测试一次时,代码1有性能问题,代码2没有
2、代码2多次执行时(循环),也有性能问题

疑问:
1、多线程开多少个合适?与服务器CPU有什么关系?
2、多线程schedule的开销在哪?

好久没来CU了,有问题就想起大家了^_^


[解决办法]
线程数=CPU核心数*2就差不多了。
[解决办法]
是threadpool库吗,有内存泄漏哦
[解决办法]
可以用boost自己的UT工具看一下就知道了
BOOST_AUTO_TEST_CASE( XXX )
{
pool tp(n);
//启动若干个schedule。。。
}
结束时就可以看到

探讨

是的
是用的boost
哪里泄露了?
引用:

是threadpool库吗,有内存泄漏哦

热点排行