-
pthread_detach(쓰레드 자원들을 분리시키자)C_C++ 프로그래밍 2019. 5. 25. 01:23
개발 환경
OS
Ubuntu 18.04.2
컴파일러
gcc version 7.4.0 (Ubuntu 7.4.0-1ubuntu1~18.04)
pthread_detach(pthread_t thread);
일반적으로는 반납이 되지 않지만,
pthread_join을 사용하면 모든 자원이 쓰레드가 종료되면 반납이 됩니다.
하지만, detach() 한번 detach() 함수를 사용하면 join() 명령을 사용하지 않아도
종료 시에 모두 반납이 됩니다.
소스코드
12345678910111213141516171819202122232425262728293031323334#include<pthread.h>#include<stdio.h>#include<unistd.h>#include<stdlib.h>void *thread_function(void *data){char a[1000000]; // 자원 생성static int num = 0;num = *((int *) data);printf("쓰레드 시작 \n");sleep(5);printf("쓰레드 끝 \n");return (void *) # // 자원을 리턴}int main(){pthread_t p_thread;int thr_id;int status;int tmp = 100;thr_id = pthread_create(&p_thread, NULL, thread_function, (void *) &tmp);if(thr_id < 0){perror("쓰레드 생성 에러 \n");exit(0);}pthread_detach(p_thread);pause();return 0;}cs 실행결과
pthread를 사용한 소스코드 컴파일 시 -pthread를 붙여야한다.
gcc -o destfile sourcefile -lpthread(필수)
123$ ps -aux | grep pthread | grep -v grep | grep -v vim; sleep 1;rojae 5989 0.0 0.0 80424 1064 pts/1 S+ 01:21 0:00 ./pthread_detachcs 단 하나 Main문만 (pause 상태이기 때문에) 실행 중임을 알 수 있다.
>> 현재 processor의 자원 상태는 별도의 명령어로 확인이 가능합니다. <<
※ 본 글은 개인 포트폴리오 혹은 공부용으로 사용하기 때문에, 무단 복사 유포는 금지하지만, 개인 공부 용도로는 얼마든지 사용하셔도 좋습니다
반응형'C_C++ 프로그래밍' 카테고리의 다른 글
pthread_cleanup_pop, pthread_cleanup_push (0) 2019.05.25 thread_exit(쓰레드에서 특정 값을 return을 시키자) (0) 2019.05.25 pthread_join(쓰레드의 종료를 대기한다) (0) 2019.05.25 pthread_create 예제 (쓰레드 생성) (0) 2019.05.25