개발 환경 |
|
OS |
Ubuntu 18.04.2 |
컴파일러 |
gcc version 7.4.0 (Ubuntu 7.4.0-1ubuntu1~18.04) |
int pthread_attr_setdetachstate(pthread_attr_t *attr, int detachstate);
PTHREAD_CREATE_JOINABLE
PTHREAD_CREATE_DETACHED 상태로 변경.
pthread_attr_t attr;
// JOINABLE 상태로 변경
pthread_attr_setdetachstate(&attr, PTHREAD_CREATE_JOINABLE);
// DETACHED 상태로 변경
pthread_attr_setdetachstate(&attr, PTHREAD_CREATE_DETACHED);
int pthread_attr_init(pthread_attr_t *attr);
pthread_attr_init는 쓰레드 속성 객체인 attr을 초기화.
int pthread_attr_destroy(pthread_attr_t *attr);
pthread_attr에 부여된 속성 값들을 제거한다.
pthread_attr을 다시 부여하기 위해서는 init을 하여 초기화가 필요하다.
소스코드
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 35 36 37 38 39 40 41 42 | #include<stdio.h> #include<stdlib.h> #include<pthread.h> #include<unistd.h> // thread function void *thread_function(void *data){ char a[100000]; static int num = 0; num = *((int *) data); printf("Thread Start\n"); sleep(5); printf("Thread end\n"); return (void *)# } int main(){ pthread_t pthread; pthread_attr_t attr; int thr_id; int status; int a = 10000; // Thread detach // PTHREAD_CREATE_DETACHED pthread_attr_init(&attr); pthread_attr_setdetachstate(&attr, PTHREAD_CREATE_DETACHED); // 위 속성 값을 사용하여 쓰레드를 생성 thr_id = pthread_create(&pthread, NULL, thread_function, (void *) &a); if(thr_id < 0){ perror("쓰레드 생성 오류\n"); exit(0); } // 속성 값 삭제 pthread_attr_destroy(&attr); pause(); return 0; } | cs |
실행결과
1 | rojae 6443 0.0 0.0 80424 1072 pts/0 S+ 01:45 0:00 ./pthread_attr | cs |
detach() 한 것 처럼
자원이 반납된 것을 알 수 있다.
※ 본 글은 개인 포트폴리오 혹은 공부용으로 사용하기 때문에, 무단 복사 유포는 금지하지만, 개인 공부 용도로는 얼마든지 사용하셔도 좋습니다
반응형
'C_C++ 프로그래밍' 카테고리의 다른 글
sscanf와 sprintf에 대해서 알아보자 (0) | 2019.06.04 |
---|---|
pthread_mutex_init (뮤텍스 사용하기!) (0) | 2019.05.25 |
pthread_cleanup_pop, pthread_cleanup_push (0) | 2019.05.25 |
thread_exit(쓰레드에서 특정 값을 return을 시키자) (0) | 2019.05.25 |
댓글