Я играю с C++ и pthreads, и пока все хорошо. Я могу получить доступ к функции-члену класса, если она статична, и я прочитал, что могу получить доступ к обычным функциям-членам класса, если передаю «это» в качестве аргумента с pthread_create, потому что C++ делает это под капотом. Но моя проблема в том, что я хочу дать int этой функции, и я не знаю, как сделать несколько аргументов с pthread_create.pthreads и C++
1
A
ответ
6
Пропустить указатель структуры.
struct Arg {
MyClass* _this;
int another_arg;
};
...
Arg* arg = new Arg;
arg->_this = this;
arg->another_arg = 12;
pthread_create(..., arg);
...
delete arg;
0
вы можете попробовать повысить библиотеку потока и использовать повышение :: 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;
};
Что мне делать с _this в Си ++? Ничего? – vincentkriek
@user: «Доступ к функциям элемента обычного класса». – kennytm
Я думаю, что было неясно, чтобы pthread_create выполнял функции C++, они должны быть статическими. Я бы хотел, чтобы они не были статичными, если это возможно. – vincentkriek