문제

pthread 매개 변수로 취합니다 void *(*start_routine)(void* userPtr), 나는 내가 사용할 수 있기를 바랐다 std::mem_fun 내 문제를 해결하기 위해서는 할 수 없습니다.

기능을 사용하고 싶습니다 void * threadFunc() 그리고 userPtr 수업으로 행동하십시오 (userPtr->threadFunc()). 비슷한 기능이 있습니까? std::mem_func 내가 사용할 수 있다고?

도움이 되었습니까?

해결책

한 가지 방법은 기본 스레드 기능을 호출하는 전역 기능을 사용하는 것입니다.

class MyThreadClass {
public:
  void main(); // Your real thread function
};

void thread_starter(void *arg) {
  reinterpret_cast<MyThreadClass*>(arg)->main();
}

그런 다음 스레드를 시작하려면 다음과 같습니다.

MyThreadClass *th = new MyThreadClass();
pthread_create(..., ..., &thread_starter, (void*)th);

반면에 PTHREADS를 수동으로 사용할 필요가 없다면 살펴 보는 것이 좋습니다. 부스트. 스레드, 좋은 C ++ 스레드 라이브러리. 거기에서 스레드, 잠금, 뮤 테스 등의 클래스를 얻을 수 있으며 훨씬 더 많은 객체 지향 방식으로 멀티 스레딩을 수행 할 수 있습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top