использовать g_thread_new со структурой

Я хочу запустить метод struct в собственном потоке:

g_thread_new( "NewThread", mymethod , NULL)

Проблема в том, что программа компилируется, только если я установил метод на «статический»:

static gpointer mymethod(gpointer nrp) { puts(this->mystring) ; ... }

Но если я установлю метод на «статический», я не смогу получить доступ к переменным экземпляра структуры, например this-> mystring.

Есть ли способ использовать g_thread_new с методами класса И получить доступ к переменным экземпляра?

0

Решение

Что вы можете и должны сделать, это получить void* в вашей статической функции в качестве параметра из потока. Тот void* это объект, который вы хотите, чтобы его функция вызывалась. Просто приведите его к типу объекта и вызовите метод.

Также рассмотрите возможность использования boost::thread,

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]