-
thread_exit(쓰레드에서 특정 값을 return을 시키자)C_C++ 프로그래밍 2019. 5. 25. 01:33
개발 환경
OS
Ubuntu 18.04.2
컴파일러
gcc version 7.4.0 (Ubuntu 7.4.0-1ubuntu1~18.04)
thread_exit(void *value)
value값을 return 시켜준다.
이 return 값은 join의 두번째 인자에서 받아온다.
소스코드
123456789101112131415161718192021222324252627282930313233343536373839404142434445#include<stdio.h>#include<pthread.h>#include<stdlib.h>#include<unistd.h>// thread functionvoid *thread_function(void * data){// Thread가 return할 값static int retval = 999;int count = *((int *) data);int i = 0;while(1){// if i == 3 => end threadif(i == count ){// Thread returnpthread_exit((void *) &retval);}printf("Thread Running ... %d : data %d \n", i, count);i++;sleep(1);}}int main(){pthread_t p_thread;int thr_id;void *tret = NULL;int count = 3;thr_id = pthread_create(&p_thread, NULL, thread_function, (void *) &count);if(thr_id < 0){perror("생성 실패\n");exit(0);}// pthread_join의 두번째 인자 tret에서 받아서// thread가 끝날 때 return 받는다pthread_join(p_thread, &tret);// pthread의 반납값 출력printf("thread가 반납한 값 %d\n", *((int *) tret));return 0;}실행결과
123456$ ./pthread_exitThread Running ... 0 : data 3Thread Running ... 1 : data 3Thread Running ... 2 : data 3thread가 반납한 값 999cs 우선 join을 통해서 main 문에서 return 받을 변수를 정해주었고
exit를 통해서 thread가 return 시켜 줄 변수를 결정한다.
그 이후에 다시 join의 두번째 인자가 return값을 받아와
출력이 정상적으로 된 것을 알 수 있다.
※ 본 글은 개인 포트폴리오 혹은 공부용으로 사용하기 때문에, 무단 복사 유포는 금지하지만, 개인 공부 용도로는 얼마든지 사용하셔도 좋습니다
반응형'C_C++ 프로그래밍' 카테고리의 다른 글
pthread_attr 사용 (pthread_detach 없이 자원 반납하기) (0) 2019.05.25 pthread_cleanup_pop, pthread_cleanup_push (0) 2019.05.25 pthread_detach(쓰레드 자원들을 분리시키자) (0) 2019.05.25 pthread_join(쓰레드의 종료를 대기한다) (0) 2019.05.25