The OpenNET Project / Index page

[ новости /+++ | форум | wiki | теги | ]

Каталог документации / Раздел "Программирование, языки" / Оглавление документа
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



Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру