#include <pthread.h>
int pthread_detach(pthread_t th);
설명
pthread_detach(:3)함수는 쓰레드 식별자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;
}
pthread_detach
사용법
설명
반환값
에러
예제
참고문헌
Recent Posts
Archive Posts
Tags