pthread_join
는 반환 값을 부여 pthread_exit
반면, 반환 값 2 번째로 인수 void**
소요 않는 이유를 이해할 수없는, void*
등의 반환 값 인수를가 .에서는 Pthreads, pthread_join을 혼동
2
A
답변
4
pthread_join은 스레드 종료를 기다리고 pthread_exit의 결과 값은 * value_ptr에 저장됩니다. 결과를 무시하려면 value_ptr에 NULL을 전달하면됩니다. 이것은 포인터를 변수에 전달하여 참조에 의한 패스를 시뮬 레이팅하는 일반적인 C 방법입니다. Passing by reference in C
pthread_join은 성공시 함수 반환 값으로 0을 반환합니다. 쓰레드가 조인되었음을 알게되고 * value_ptr에서 값에 접근 할 수 있습니다.
void *value = NULL;
if (pthread_join(thread, &value) == 0) {
// thread has ended, and the exit value is available in
// the value variable
}
2
기본적으로 pthread_join()
정보의 두 peices을 반환하고 싶어 :
에서 (유형 void*
있다) 스레드가 반환 무엇이든 성공/실패 표시
pthread_join()
: 함수의 값- 반환 성공/실패는 호출자가
void**
에 전달 발신자가 제공하는 위치에 스레드의void*
결과를 반환합니다.
pthread_join()
의 경우 발신자 제공 위치는 선택 사항입니다. 호출자가 그 결과에 관심이 없다는 것을 NULL로 전달할 수있다. 발신자가 제공하는 위치를 선택 사항으로 만드는 것이 공통적 인 것은 아니며, 결코 보편적이지는 않습니다.
pthread_exit()
는 인수의로 그 인수가 결과 함수의하지이기 때문에 void**
를 사용할 필요가 없습니다. 따라서 단순히 값을 직접 사용할 수 있습니다.
Succintly : 반환 값은'pthread_exit()'에 전달되는 값이지만 반환 값을 저장할 위치는'pthread_join()'에 전달 된 값입니다. – caf