ThreadDestroy(), ThreadDestroy_r()

Уничтожить поток немедленно

Прототип:

#include <sys/neutrino.h>
int ThreadDestroy( int tid,
int priority,
void *status );
int ThreadDestroy_r( int tid,
int priority,
void *status );

Аргументы:

tid
Идентификатор уничтожаемого потока, возвращаемый ThreadCreate(), или 0, чтобы уничтожить текущий поток, или -1, чтобы уничтожить все потоки в текущем процессе.
priority
Приоритет, с которым необходимо уничтожить несколько потоков или -1, чтобы использовать приоритет текущего потока.
status
Значение, которое делает доступным поток, ожидающий неотвязанный удаляемый поток.

Библиотека:

libc

Описание:

Эти вызовы ядра завершают поток, определяемый tid. Если tid равен 0, то предполагается использование вызывающего потока. Если tid равен -1, то все потоки текущего процесса уничтожаются. Когда несколько потоков уничтожены, уничтожение планируется по одному потоку за раз с приоритетом, указанным в priority. Если priority равен -1, используется приоритет вызывающего потока.

Функции ThreadDestroy() и ThreadDestroy_r() идентичны, за исключением способа сообщения об ошибках.


Note: Вместо использования этих вызовом ядра напрямую пользуйтесь pthread_abort() или pthread_exit()

Если завершённый поток не отсоединён, он делает значение status доступным любому успешному присоединению. До тех пор пока другой поток получает это значение, идентификатор tid не переиспользуется и немного ресурсов ядра (объекты потоков) удерживаются системой. Если поток отсоединён, status игнорируется, а все ресурсы потока немедленно освобождаются.

Когда последний поток в процессе уничтожен, процесс завершается и освобождает все ресурсы потока, даже если они не отвязаны или не присоединены.


Note: При вовзрате из ThreadDestroy() или ThreadDestroy_r() целевой поток помечается для уничтожения, но если его невозможно уничтожить немедленно, то он может и не быть уничтожен, пока не попытается начать работу.

Если вызывающий поток уничтожен, то из ThreadDestroy() и ThreadDestroy_r() не происходит возврата.

Состояния блокировки:

Если происходит возврат из функции, они не блокируют

Возвращаемое значение:

ThreadDestroy()
Если возникла ошибка функция возвращает -1, код ошибки записывается в errno. Любое другое возвращенное значение считается успешным завершением.
ThreadDestroy_r()
EOK возвращается при успешном завершении. Функция НЕ устанавливает errno. При возникновении ошибки функция возвращает один из представленных ниже кодов.

Коды ошибок:

ESRCH
Не существует потока с таким tid.

Классификация:

ЗОСРВ «Нейтрино»

Точка остановки потока
Нет
Обработчик прерываний
Нет
Обработчик сигналов
Да
В потоке
Да

Тематические ссылки:

pthread_abort(), pthread_exit(), ThreadCancel(), ThreadCreate()




Предыдущий раздел: Описание API системной библиотеки