linuxスレッド回収

1869 ワード

int pthread_create(pthread_t *thread, const pthread_attr_t *attr,
                   void *(*start_routine) (void *), void *arg);

void pthread_exit(void *retval);

1.スレッド属性を設定スレッド作成時にattr属性がNULLに設定されている場合、スレッドはデフォルトの属性joinableを使用します.プロパティをdetachedに設定する必要があります
int pthread_attr_setdetachstate(pthread_attr_t *attr, int detachstate);
int pthread_attr_getdetachstate(pthread_attr_t *attr, int *detachstate);

pthread_t thread_id;
pthread_attr_t attr;
pthread_attr_init(&attr);
pthread_attr_setdetachstate(&attr, PTHREAD_CREATE_DETACHED);
pthread_create(&thread_id, &attr, func, NULL);
pthread_attr_destroy(&attr);

2. pthread_joinブロック待機スレッドが終了し、クリーンアップ(wait,waitpidと同様)
int pthread_join(pthread_t thread, void **retval);

pthread_join(thread, (void**)&thread_ret); //     
printf("thread_ret = %d.
"
, *thread_ret);

3. pthread_detach非ブロック
int pthread_detach(pthread_t thread);

pthread_detach(pthread_self()); //