pthread_detach
OS/리눅스 & 유닉스 2012. 3. 24. 19:23pthread_detach
실행중인 쓰레드를 detached(분리)상태로 만든다.
사용법
#include <pthread.h> int pthread_detach(pthread_t th);
설명
pthread_detach함수는 쓰레드 식별자th를 가지는 쓰레드를 메인쓰레드에서 분리 시킨다. 이것은 th를 가지는 쓰레드가 종료되는 즉시 쓰레드의 모든 자원을 되돌려(free)줄 것을 보증한다. detach상태가 아닐경우 쓰레드가 종료한다고 하더라도 pthread_join(3)을 호출하지 않는 한 자원을 되돌려주지 않는다.
pthread_detach()함수를 호출하는 외에도 pthread_create()시 pthread_attr_t에 detachstate를 지정해 줌으로써 detach상태로 생성할 수 도 있다. pthread_attr_t는 pthread_attr_init(3)함수를 이용해서 변경할 수 있다.
쓰레드가 detach상태로 되었다면 해당 쓰레드에 대한 pthread_join()호출은 실패한다.
반환값
성공하면 0을, 실패하면 0이 아닌 값을 리턴한다.
에러
- ESRCH
th식별자를 가진 쓰레드가 존재하지 않는다.
- EINVAL
th식별자를 가진 쓰레드가 이미 detach상태에 있다.
예제
#include <pthread.h> #include <stdio.h> #include <unistd.h> #include <stdlib.h> // 쓰레드 함수 // 1초를 기다린후 아규먼트^2 을 리턴한다. void *t_function(void *data) { char a[100000]; int num = *((int *)data); printf("Thread Start\n"); sleep(5); printf("Thread end\n"); } int main() { pthread_t p_thread; int thr_id; int status; int a = 100; printf("Before Thread\n"); thr_id = pthread_create(&p_thread, NULL, t_function, (void *)&a); if (thr_id < 0) { perror("thread create error : "); exit(0); } // 식별번호 p_thread 를 가지는 쓰레드를 detach // 시켜준다. pthread_detach(p_thread); pause(); return 0; }
'OS > 리눅스 & 유닉스' 카테고리의 다른 글
프로세스 (process) (0) | 2012.04.06 |
---|---|
getprocs64 (0) | 2012.04.02 |
nohup (0) | 2012.03.22 |
awk 변수 shell 변수에 저장 (0) | 2012.03.20 |
awk (0) | 2012.03.20 |