mem_fun 실패, pthread 및 클래스 ptr
-
19-08-2019 - |
문제
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 ++ 스레드 라이브러리. 거기에서 스레드, 잠금, 뮤 테스 등의 클래스를 얻을 수 있으며 훨씬 더 많은 객체 지향 방식으로 멀티 스레딩을 수행 할 수 있습니다.
제휴하지 않습니다 StackOverflow