Теория распараллеливания и синхронизация. Демьянович Ю.К - 104 стр.

UptoLike

завершает свою работу вызовом
pthread_exit(value);
где value скалярное возвращаемое значение или null.
Если требуется, чтобы родительский поток ждал завершения
работы сыновнего процесса, то следует установить
pthread_join(tid, value_ptr);
где tid идентификатор сыновнего процесса, а value_ptr адрес
для возвращаемого значения, которое определяется, когда сынов-
ний процесс вызывает функцию exit.
Потоки взаимодействуют через глобальные переменные; они
синхронизируются с помощью активного ожидания, блокировок,
семафоров или с помощью условных переменных.
Заголовочный файл semaphore.h содержит определения и про-
тотипы операций для семафоров.
Дескрипторы семафоров определены как глобальные относи-
тельно использующих их потоков sem_t S; дескриптор инициали-
зируется вызовом
sem_init(&S, SHARED, 1);
который позволяет семафору присвоить значение 1.
Если параметр SHARED не равен нулю, то процессы могут раз-
делять данный семафор; в противном случае .е. если параметр
SHARED равен нулю) семафор может использоваться потоками
только одного процесса.
Эквивалентом операции P в библиотеке Pthread служит функ-
ция sem_wait, а эквивалентом операции V является функция
sem_post.
Этот параграф закончим одним из вариантов защиты крити-
ческой секции с использованием семафоров из библиотеки Pthread:
sem_wait(&s); / применение операции P к семафору s /
[критическая секция];
sem_post(&s); / применение операции V к семафору s /
105