vector
class C { void *print(void *) { cout c.print ()를 실행하는 스레드를 만들려면 다음과 같이 직관적으로 쓸 수 있습니다 :pthread_create (& t1, null, & c [0] .print, null)
vector는 다음과 같습니다. (tree_item ::) (void*) 'to'void*(*) (void*) '(void*)'classes; pthread_t t1; classes.push_back(C()); classes.push_back(C());
pthread_create(&t1, NULL, &c[0].print, NULL);이 장애물을 극복하려면이 장애물을 극복하려면
cannot convert ‘void* (tree_item::*)(void*)’ to ‘void* (*)(void*)’정적 클래스 메소드에는 "이"매개 변수가 없으며 클래스의 인스턴스없이 직접 호출 할 수 있습니다. Hello 함수를위한 정적 클래스 방법을 구현하는 방법은 다음과 같습니다.
클래스 C { 공공의: 정적 void *hello (void *) {std :: cout
c c; pthread_create (& t, null, & c :: hello_helper, & c);
여기서 hello_helper는
void *hello_helper (void *context) {return (c *) context)-> hello (hello (hello); }
class C { void *print(void *) { cout 정적 클래스 메소드 또는 함수 포인터를 사용하여 스레드 내에서 클래스의 멤버 함수를 안전하게 호출하여 "이"매개 변수 문제를 피할 수 있습니다.
부인 성명: 제공된 모든 리소스는 부분적으로 인터넷에서 가져온 것입니다. 귀하의 저작권이나 기타 권리 및 이익이 침해된 경우 자세한 이유를 설명하고 저작권 또는 권리 및 이익에 대한 증거를 제공한 후 이메일([email protected])로 보내주십시오. 최대한 빨리 처리해 드리겠습니다.
Copyright© 2022 湘ICP备2022001581号-3