увеличить несколько вызовов метода класса - PullRequest
3 голосов
/ 15 апреля 2011

В boost :: thread можно вызвать метод класса, не вызывая класса и реализуя оператор void () (), как при вызове метода класса

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

Я получаюошибка <unresolved overloaded function type>

На самом деле я бы хотел знать то же самое для zi :: thread

Ответы [ 2 ]

3 голосов
/ 15 апреля 2011

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 копируются во внутреннее хранилище для доступа новым потоком.

3 голосов
/ 15 апреля 2011

Для boost :: thread вы можете использовать boost :: bind для вызова функции-члена класса.

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