Как я могу создать новый поток из расширенной группы нитей c ++, которая начинает выполнение в функции-члене объекта? - PullRequest
0 голосов
/ 17 октября 2010

Есть несколько переменных-членов и мьютексов, связанных с объектом, поэтому было бы проще использовать функцию-член, а не отдельную функцию.

1 Ответ

1 голос
/ 17 октября 2010

Укажите operator() член функции.

РЕДАКТИРОВАТЬ : как ...

#include <boost/thread.hpp>
#include <boost/bind.hpp>
#include <iostream>

struct MyThread
{
    int x;

    MyThread(): x( -1 ) {}
    void run()      // Name doesn't matter.
    {
        x = 42;
    }
};

int main()
{
    namespace b = boost;
    using namespace std;

    MyThread        t;
    b::thread_group g;

    g.create_thread( b::bind( &MyThread::run, &t ) ) ;
    // ... whatever
    g.join_all();
    cout << t.x << endl;    
}

Отказ от ответственности: Я не знаком с темами Boost.И этот пример добавлен после того, как ответ принят.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...