• Эффективность снизилась бы, поскольку пришлось бы копировать по крайней мере некоторую часть стека, несмотря на то, что в большинстве случаев после вызова нужной «запускающей» функции потоку уже не требуется скопированный контекст.
Будущие направления
Отсутствуют.
Смотри также
fork (), pthread_exit () , pthread_join (), то
Последовательность внесения изменений
Функция впервые реализована в выпуске Issue 5. Включена для согласования с расширением POSIX Threads Extension.
Issue 6
Функция pthread_create () от
В результате согласования со спецификацией Single UNIX Specification был добавлен обязательный код ошибки [EPERM].
С целью согласования со ста
Для согласования со стандарто
В раздел «Описание» внесено явное утверждение о то
pthread_detach
Имя
pthread_detach — функция отсоединения потока.
Синопсис
THR
#include
int pthread_detach (pthread_t
Описание
Функция pthread_detach () уведомляет реализацию о том, что область памяти для потока thread может быть восстановлена, когда он завершит выполнение. Если поток не завершается, функция pthread_detach () не служит причиной для его завершения. Результат нескольких вызовов функции pthread_detach () для одного и того же потока не определен.
Возвращаемое значение
При успешном завершении функция pthread_detach () возвращает нулевое значение; в противном случае — код ошибки, обозначающий ее характер.
Ошибки
Функция pthread_detach () завершится неудачно, если:
[EINVAL] реализация обнаружила, что значение, заданное параметром thread, не относится к присоединенному потоку;
[ESRCH] не был найден ни один поток, соответствующий заданному идентификационному номеру потока ID.
Эта функция не возвращает код ошибки [EINTR].
Примеры
Отсутствуют.
Замечания по использованию
Отсутствуют.
Логическое обоснование
Функции pthread_join() или pthread_detach() должны вызываться для каждого потока, который создается, чтобы можно было снова использовать область памяти, связанную с потоком.
Высказывалось мнение о необязательности использования функции pthread_detach (): поскольку поток никогда динамически не отсоединяется, то достаточно использовать атрибут создания потока detachstate. Однако необходимость в этой функции возникает по крайней мере в двух случалх.
1. В обработчике запроса на отмену для функции присоединения потока (pthread__join()) важно иметь функцию pthread_detach(), чтобы отсоединить поток. Без нее обработчик вынужден был бы выполнить еще раз функцию pthread_j oin (), чтобы попытаться отсоединить поток, который не только задерживает процедуру отмены в течение неограниченного времени, но и вносит новый вызов функции pthread_join(). В этом случае есть смысл говорить о динамическом отсоединении.
2. Чтобы отсоединить «исходный поток» (это может понадобиться в процессах, которые создают потоки сервера).
Будущие направления
Отсутствуют.
Смотри также
pthread_join (), том Base Definitions стандарта IEEE Std 1003.1-2001,
Последовательность внесения изменений
Функция впервые реализована в выпуске Issue 5. Включена
Issue 6
Функция pthread_detach () отмечена как часть опции Threads.
pthread_exit
Имя
pthread_exit — функция завершения потока.
Синопсис
THR #include
void pthread_exit (void *va2ue_ptr);
Описание
Функция pthread_exit() завершает вызывающий поток и делает значение
Когда из функции запуска возвращается поток, отличный от того, в котором была изначально вызвана функция main(), делается неявное обращение к функции pthread_exit(). Значение, возвращаемое этой функцией, служит в качестве состояния выхода этого потока.
Поведение функции pthread_exit () не определено, если она вызвана из обработчика запроса на отмену потока или функции деструктора, к которой было сделано обращение в результате явного или неявного вызова функции pthread_exit ().