У меня есть следующий код, который получает ошибку сбрасывания ядра. Затем каждый экземпляр C создает собственный поток. Я думаю, что что-то не так со статической функцией и аргументом класса «count». Когда я закомментировать код, который печатает его, никакой ошибки не происходит ..ошибка сегментации при использовании pthreads в классе
#include <iostream>
#include <pthread.h>
using namespace std;
class C {
public:
int count;
C(int c_): count(c_){}
public:
void *hello(void)
{
std::cout << "Hello, world!" <<std::endl;
std::cout<<count; // bug here!!!
return 0;
}
static void *hello_helper(void *context)
{
return ((C *)context)->hello();
}
void run() {
pthread_t t;
pthread_create(&t, NULL, &C::hello_helper, NULL);
}
};
int main() {
C c(2);
c.run();
C c2(4);
c2.run();
while(true);
return 0;
}
mascoj, вы правы, этот аргумент является указателем на экземпляр класса, я был неаккуратным в этой точке. , – eral