2012-10-13 6 views

답변

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*있다) 스레드가 반환 무엇이든 성공/실패 표시

  • C에서 함수가 두 개의 개별 값을 반환하는 일반적인 방법은 해당 값 중 하나를 정상적으로 반환하고 thether를 '반환'하는 것입니다. 호출자가 해당 위치에 대한 포인터를 전달하는 호출자가 제공 한 위치의 값. 그래서 pthread_join() : 함수의 값
    • 반환 성공/실패는 호출자가 void**에 전달 발신자가 제공하는 위치에 스레드의 void* 결과를 반환합니다.

    pthread_join()의 경우 발신자 제공 위치는 선택 사항입니다. 호출자가 그 결과에 관심이 없다는 것을 NULL로 전달할 수있다. 발신자가 제공하는 위치를 선택 사항으로 만드는 것이 공통적 인 것은 아니며, 결코 보편적이지는 않습니다.

    pthread_exit()는 인수의로 그 인수가 결과 함수의하지이기 때문에 void**를 사용할 필요가 없습니다. 따라서 단순히 값을 직접 사용할 수 있습니다.

  • +0

    Succintly : 반환 값은'pthread_exit()'에 전달되는 값이지만 반환 값을 저장할 위치는'pthread_join()'에 전달 된 값입니다. – caf