개발 환경 |
|
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() 명령을 사용하지 않아도
종료 시에 모두 반납이 됩니다.
소스코드
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 | #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(필수)
1 2 3 | $ 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_detach | cs |
단 하나 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 |
댓글