Синхронизация и взаимодействие программных потоков в операционной среде реального времени. Дорогов А.Ю. - 15 стр.

UptoLike

Составители: 

15
pthread_join(tid, value_ptr) раньше, чем завершился дочерний поток, то он
блокируется до завершения дочернего потока. При завершении родитель-
ского потока все связанные с ним дочерние потоки уничтожаются.
Если поток создан с атрибутом DETACHED, то, с одной стороны, он не
сможет возвращать данные, а с другойне будет уничтожен ядром при за-
вершении его родителя.
Атрибут schedpolicy. По умолчанию задается жесткое наследование
параметров и дисциплины диспетчеризации создаваемого потока от его
родителя. Явным образом можно установить любую из трех допустимых
дисциплин диспетчеризации. Дисциплина диспетчеризации и ее параметры
задаются атрибутом schedparam.
Атрибут contentionscope (масштаб диспетчеризации). Значение по
умолчанию PTHREAD_SCOPE_SYSTEM – диспетчеризация всех потоков
вместе.
Атрибут stacksize (размер стека). По умолчанию 4 Kбайт.
Атрибут stackaddr (фактическое размещение стека). По умолчанию
этот вопрос система решает самостоятельно.
Структура pthread_attr_t, содержащая атрибуты потока, инициализиру-
ется системным вызовом pthread_attr_init() и обеспечивает возможности,
определенные стандартом POSIX. Кроме того, в QNX-Neutrino реализованы
дополнительные возможности, несколько выходящие за пределы стандар-
та, определенные набором флагов в поле flags структуры pthread_attr_t.
Флагиэто набор бит одного слова, которые складываются по «или».
В соответствии с POSIX при поступлении незамаскированного сигна-
ла, для которого не определен обработчик, все потоки процесса должны
быть уничтожены, однако при флаге PTHREAD_MULTISIG_DISALLOW бу-
дет уничтожен только поток, принявший сигнал. Остальные флаги преду-
смотрены POSIX и позволяют изменять поведение потока при завершении.
Если установлен флаг PTHREAD_CANCEL_DISABLE, то запрос на за-
вершение потока не выполняется, но ставится в очередь и будет выполнен
после сброса флага (т. е. установлен в значение
PTHREAD_CANCEL_ENABLE).
Когда завершение разрешено, то анализируется еще один флаг, опре-
деляющий тип завершенияотсроченное, когда установлен флаг
PTHREAD_CANCEL_DEFERED (по умолчанию), или асинхронное, когда ус-
тановлен флаг PTHREAD_CANCEL_ASYNCHRONOUS. При асинхронном
завершении поток будет уничтожен на первой же операции, которую он по-
пытается выполнить. При отсроченном завершении поток будет выполнять-