3

boost :: threadでは、クラスメソッドを呼び出すだけで、クラスを呼び出し可能にしたり、void operator()()を実装したりせずにクラスメソッドを呼び出すことができます。

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

エラーが発生します<unresolved overloaded function type>

実際、私はzi::threadについても同じことを知りたいと思います

4

2 に答える 2

3

boost :: threadの場合、boost::bindを使用してクラスメンバー関数を呼び出すことができます。

myclass obj;
for(int i=0;i<5;i++)
        boost::thread worker(boost::bind(&myclass::myfunc,&obj,i,param2));
于 2011-04-15T04:47:18.407 に答える
3

boost::thread特別なことは何も必要ありません、それはあなたが望むように正確に動作します(構文エラーを除いて):

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

boost.threadドキュメントから:

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

効果:まるでthread(boost::bind(f, a1, a2, ...))。その結果、fそれぞれaNが新しいスレッドによるアクセスのために内部ストレージにコピーされます。

于 2011-04-15T05:28:37.340 に答える