Я пытаюсь вызвать функцию-член pthread с помощью внешней обертки, но это не работает для меня, я получаю ошибку seg. Почему это? Вот небольшая тестовая программа, которая отображает проблему:pthread, чтобы вызвать элемент func, обернув его извне
#include <iostream>
#include <pthread.h>
class test {
public:
test();
~test();
void RunTh(void);
private:
pthread_t *pid;
};
void *Run_wrp(void *context);
void test::RunTh(void)
{
while(1);
}
test::test()
{
pthread_create(pid,NULL,&Run_wrp,this);
}
test::~test(){}
int main(void) {
test tmp;
std::cin.get();
}
void *Run_wrp(void *context)
{
((test*)context)->RunTh();
}
«pid» - это просто указатель, но не фактический объект «pthread_t» - попробуйте удалить «*», а затем просто разыграем его «&» в вашем вызове «pthread_create()». – sonicwave
Кроме того, если вы сделаете «Run_wrp» статической функцией-членом вашего класса, вы можете сохранить все в ней, вместо того, чтобы полагаться на внешние помощники. – sonicwave
@sonicwave Если вы переместите свой первый комментарий в ответ, я приму его! – cerr