Здавалка
Главная | Обратная связь

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



При успешном завершении pthread__create возвращает 0. В случае ошибки возвращается ненулевой код.

Потоковая функция имеет прототип:

void * имя функции(void *);

И параметр, и возвращаемое значение такой функции - указатели, таким образом, функция может принимать и возвращать любую информацию.

Нить завершается при завершении выполнения потоковой функции или при выполнении функции pthread exit.

Функция pthread exit завершает выполнение той нити, из которой она была вызвана. Аргумент value является указателем на данные, возвращаемые нитью, этот указатель может быть получен родительской нитью при помощи функции pthread_ j oin. Действие функции pthread_exit эквивалентно оператору: return value;

Функция pthread_join применяется для нитей так же, как системный вызов wait применяется для процессов: она заставляет вызвавшую ее нить ожидать завершения указанной в вызове нить и позволяет вызвавшей нити получить значение, которое вернула завершившаяся нить.

Phtread_join

ожидание завершения нити

Синтаксис

# include <pthread.h>

int pthread_join(pthread_t threadid, void *value);

Описание

Функция pthread_join переводит нить, из которой она была вызвана в состояние ожидания до тех пор, пока не завершится нить, определяемая идентификатором threadid. Аргумент value является указателем на данные, возвращаемые нитью. Если этот аргумент не равен NULL, значение, возвращаемое нитью thread, записывается по адресу value. Это то значение, которое было аргументом функции pthread_exit в нити thread.

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

При успешном завершении pthread_join возвращает 0. В случае ошибки возвращается ненулевое значение.

Выполнение нити может быть принудительно прекращено из другой нити при помощи функции pthread_cancel, которой задается идентификатор "убиваемой" нити.

Фактически исключающий семафор является обычным двоичным семафором с начальным значением 1.

Внимание! При подготовке программы, содержащей обращения к функциям библиотеки pthread, следует явным образом указывать компилятору необходимость подключения этой библиотеки с соответствующей опции. Например:

сс -о name_program name program.о -lpthread

Постановка задачи.

Для заданной в Вашем варианте индивидуального задания предметной области разработайте программную модель ситуации, включающей в себя следующее:

1. создание главного процесса источника;

2. порождение нитей для выполнения определённой функции;

3. присоединение нитей к главной программе.







©2015 arhivinfo.ru Все права принадлежат авторам размещенных материалов.