C++을 사용하여 스레드 클래스를 구현합니다. 내 코드는 다음과 같습니다. 스레드 데이터에 액세스하는 방법에 문제가 있습니다. Thread 클래스에서 pthread_create() 함수를 사용하여 스레드를 만듭니다. EntryPoint() 함수를 호출하여 생성 된 스레드를 시작합니다. Run 함수에서 마스크 변수에 액세스하려고합니다. 세그먼트 변수가 항상 표시됩니다. 그래서, 내 질문은 여부를 새로 만든 스레드 원래 클래스의 데이터를 복사입니까? 스레드 자체 데이터에 액세스하는 방법?C++ multithread
class Thread {
public:
int mask;
pthread_t thread;
Thread(int);
void start();
static void * EntryPoint (void *);
void Run();
};
Thread::Thread(int a) {
mask =a;
}
void Thread::Run() {
cout<<"thread begin to run" <<endl;
cout << mask <<endl; // it always show segmentfault here
}
void * Thread::EntryPoint(void * pthis) {
cout << "entry" <<endl;
Thread *pt = (Thread *) pthis;
pt->Run();
}
void Thread::start() {
pthread_create(&thread, NULL, EntryPoint, (void *)ThreadId);
pthread_join(thread, NULL);
}
int main() {
int input_array[8]={3,1,2,5,6,8,7,4};
Thread t1(1);
t1.start();
}
당신 말이 맞습니다. 이걸 pthread_create()에 전달해야합니다. 감사. – chnet
개체 수명도주의하십시오. 아래의 내 게시물을 참조하십시오. 그렇지 않으면 문제가 계속 발생합니다. ;) –