next up previous contents
Next: Компиляция многопоточного приложения. Up: Потоки (threads). Previous: Работа с ключами потока.   Contents

Остановка потока.

Поток может прервать свое выполнение несколькими способами:

Функция

void pthread_exit(void *status);
прерывает выполнение потока точно так же, как функция exit() прерывает процесс:

#include <pthread.h>

int status;

pthread_exit(&status); /* выход возвращает статус status */

Функция pthread_exit() заканчивает выполнение вызвавшего ее потока. Все привязки данных для этого потока освобождаются. Если вызывающий поток не отделен, то ID этого потока и статус выхода status сохраняются, пока поток блокирован. В противном случае, статус игнорируется, а ID потока может быть немедленно использован для другого потока.

Функция pthread_cancel() предназначена для прерывания потока:

#include <pthread.h>

pthread_t thread;

int ret;

ret = pthread_cancel(thread);

Способ обработки запроса на прерывание потока зависит от состояния указанного потока. Две функции, pthread_setcancelstate() и pthread_setcanceltype(), определяют это состояние.

pthread_cancel() возвращает 0 в случае успешного завершения, или другое значение в случае ошибки.



2003-12-09