Уничтожить поток немедленно
#include <sys/neutrino.h>int ThreadDestroy( int tid,int priority,void *status );int ThreadDestroy_r( int tid,int priority,void *status );
0
, чтобы уничтожить текущий поток, или -1
, чтобы уничтожить все потоки в текущем процессе.-1
, чтобы использовать приоритет текущего потока.libc
Эти вызовы ядра завершают поток, определяемый tid. Если tid равен 0
, то предполагается использование вызывающего потока. Если tid равен -1
, то все потоки текущего процесса уничтожаются. Когда несколько потоков уничтожены, уничтожение планируется по одному потоку за раз с приоритетом, указанным в priority. Если priority равен -1
, используется приоритет вызывающего потока.
Функции ThreadDestroy() и ThreadDestroy_r() идентичны, за исключением способа сообщения об ошибках.
Если завершённый поток не отсоединён, он делает значение status доступным любому успешному присоединению. До тех пор пока другой поток получает это значение, идентификатор tid не переиспользуется и немного ресурсов ядра (объекты потоков) удерживаются системой. Если поток отсоединён, status игнорируется, а все ресурсы потока немедленно освобождаются.
Когда последний поток в процессе уничтожен, процесс завершается и освобождает все ресурсы потока, даже если они не отвязаны или не присоединены.
При вовзрате из ThreadDestroy() или ThreadDestroy_r() целевой поток помечается для уничтожения, но если его невозможно уничтожить немедленно, то он может и не быть уничтожен, пока не попытается начать работу. |
Если вызывающий поток уничтожен, то из ThreadDestroy() и ThreadDestroy_r() не происходит возврата.
Если происходит возврат из функции, они не блокируют
-1
, код ошибки записывается в errno. Любое другое возвращенное значение считается успешным завершением.EOK
возвращается при успешном завершении. Функция НЕ устанавливает errno. При возникновении ошибки функция возвращает один из представленных ниже кодов.
ЗОСРВ «Нейтрино»
pthread_abort(), pthread_exit(), ThreadCancel(), ThreadCreate()
Предыдущий раздел: Описание API системной библиотеки