提升对类方法的多次调用

时间:2011-04-15 02:16:42

标签: c++ multithreading boost callable

在boost :: thread中,可以调用类方法而不使类可调用并实现void operator()(),就像调用类方法一样

   for(int i=0;i<5;i++)
    boost::thread worker(myclass.myfunc,i,param2);

我收到错误<unresolved overloaded function type>

实际上我更喜欢知道zi :: thread

的相同内容

2 个答案:

答案 0 :(得分:3)

对于boost :: thread,你可以使用boost :: bind来调用类成员函数。

myclass obj;
for(int i=0;i<5;i++)
        boost::thread worker(boost::bind(&myclass::myfunc,&obj,i,param2));

答案 1 :(得分:3)

boost::thread不需要任何特殊内容,它可以完全按照您的意愿工作(减去语法错误):

for (int i = 0; i != 5; ++i)
    boost::thread worker(&myclass::myfunc, myclassPointer, i, param2);

来自boost.thread docs

  

template <class F,class A1,class A2,...>   
thread(F f,A1 a1,A2 a2,...);

     

效果:好像thread(boost::bind(f, a1, a2, ...))。因此,f和每个aN被复制到内部存储中以供新线程访问。