Pthreads и C ++ - PullRequest
       17

Pthreads и C ++

1 голос
/ 18 марта 2010

Я играю с C ++ и pthreads и пока все хорошо. Я могу получить доступ к функции-члену класса, если она статична, и я прочитал, что могу получить доступ к нормальным функциям-членам класса, если я передам «this» в качестве аргумента с помощью pthread_create, потому что c ++ делает это внутри. Но моя проблема в том, что я хочу дать int этой функции, и я не знаю, как сделать несколько аргументов с pthread_create.

Ответы [ 2 ]

6 голосов
/ 18 марта 2010

Передать указатель структуры.

struct Arg {
  MyClass* _this;
  int      another_arg;
};

...

Arg* arg = new Arg;
arg->_this = this;
arg->another_arg = 12;
pthread_create(..., arg);
...
delete arg;
0 голосов
/ 08 мая 2013

вы можете попробовать увеличить поток библиотеки и использовать boost :: bind () Вот пример,

class MyThread
{
public:
    MyThread( /* Your arguments here */) : m_thread(NULL)
    {
        m_thread = new boost::thread(boost::bind(&MyThread::thread_routine, this));
    }

    ~MyThread()
    {
        stop();
    }

    void stop()
    {
        if (m_thread)
        {
            m_thread->interrupt(); 
            m_thread->join();
        }
    }

private:
    void thread_routine() {... /* you can access a/b here */}


private:
    int a;
    int b;
    boost::thread *m_thread;
};
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...