6.3.4 Отдельные потоки

Предыдущая  Содержание  Следующая V*D*V

Как уже говорилось ранее, поток, создаваемый с помощью pthread_create со стандартным набором атрибутов, является объединяемым потоком. Для освобождения ресурсов, выделенных объединяемому потоку, необходимо вызвать pthread_join. Иногда мы хотим создавать "независимые" потоки. Они должны завершиться, когда они захотят, и не нуждаются в другом потоке для присоединения к ним. Для достижения этого мы должны поместить их в состояние "отдельный" (detached). Это можно сделать двумя способами:

 

Установкой атрибута DETACH во время создания потока
 
pthread_attr_t attr;
pthread_attr_init(&attr);
pthread_attr_setdetachstate(&attr, PTHREAD_CREATE_DETACHED);
pthread_create(&tid, &attr, routine, arg);

 

Функцией pthread_detach
 
int pthread_detach(pthread_t tid);

 

Любой поток может поместить поток tid в состояние "отдельный", вызвав функцию pthread_detach. Поток также может поместить самого себя в состояние "отдельный", вызвав

 

pthread_detach(pthread_self());

 

Предыдущая  Содержание  Следующая