Архив документации OpenNet.ru /
Раздел "Программирование, языки" /
Индекс
Next: Компиляция многопоточного приложения.
Up: Потоки (threads).
Previous: Работа с ключами потока.
Contents
Поток может прервать свое выполнение несколькими способами:
- Первый способ предполагает возвращение управления из основной процедуры
потока start_routine;
- Второй способ - вызов pthread_exit(), возвращающий статус
выхода;
- Третий способ - прерывание потока с помощью функции pthread_cancel().
Функция
-
- 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
Архив документации на OpenNet.ru