Редакция 1.32 от 26.10.2004. — 161 c.
Изначально компьютерное описание, использования ОС QNX, и насыщенное максимальным числом иллюстрационных примеров в виде проектов или отдельных фрагментов кода.
Те механизмы, программные техники и элементы API, которые наиболее слабо затронуты в литературных источниках (например, базовая форма spawn() ) - рассматриваются с максимальной обстоятельностью, те же, которые достаточно подробно описаны, или интуитивно.
понятны (например, всё семейство вызовов, производных от spawn() - только поверхностно перечисляются.
Предполагается, что читатель уже достаточно обстоятельно знаком с общей техникой программирования в С/С++ 2 , и имеет некоторый опыт в описываемой области по другим ОС (Linux, MS-DOS, MS Windows).
Предисловие.
Типографские соглашения.
Введение.
Параллелизм.
Семейства API.
Native QNX API.
POSIX (BSD) API.
System V API.
Процессы и потоки.
Процессы.
Создание нового процесса.
Использование командного интерпретатора.
Клонирование процесса.
Запуск нового программного кода.
Завершение процесса.
Потоки.
Создание нового потока.
Атрибуты потока.
Присоединённость.
Дисциплина диспетчирования.
Приоритет.
Отличия от POSIX.
Передача параметров потоку.
Данные потока.
Собственные данные потока.
Диспетчеризация потоков.
Спорадическая диспетчеризация.
Завершение потока.
Возврат результата потока.
Уничтожение (отмена) потока.
Стек процедур завершения.
“Легковесность” потока.
Сигналы.
Традиционная обработка сигнала.
“Старая” модель обработки сигнала.
Модель надёжных сигналов.
Модель сигналов реального времени.
Сигналы в потоках.
Примитивы синхронизации.
Семафор (счётный).
Создание семафора.
Операции блокировки.
Операции разблокирования.
Получение статуса семафора.
Использование семафора.
Мютекс.
Параметры мютекса.
Инициация параметров.
Установка граничного приоритета.
Определение протокола защиты от инверсии приоритетов.
Определение возможности доступа из внешних процессов.
Разрешение рекурсивного захвата мютекса.
Определение типа мютекса.
Освобождение параметров.
Инициализация мютекса.
Изменение/получение граничного приоритета.
Функции захвата мютекса.
Простой захват.
Попытка захвата.
Захват с установкой времени ожидания.
Освобождение мютекса.
Разрушение объекта – мютекса.
Операции не поддерживаемые POSIX.
Восстановление “мертвого” мютекса.
Установка уведомления о “смерти” мютекса.
Пример применения мютекса.
Условная переменная.
Параметры условной переменной.
Инициализация параметров.
Параметр доступа.
Параметры вычисления тайм-аута.
Разрушение параметров.
Инициализация условной переменной.
Функции ожидания условия.
Простое ожидание.
Ожидание с тайм-аутом.
Функции выполнения условия.
Выполнение условия для одного ждущего потока.
Выполнение условия для всех ждущих потоков.
Разрушение условной переменной.
Ждущая блокировка.
Захват и освобождение ждущей блокировки.
Функции ожидания.
Ожидание завершения потока.
Барьер.
Параметры барьера.
Инициализация и разрушение барьера.
Ожидание на барьере.
Блокировки чтения / записи.
Spin блокировка.
Специфические механизмы QNX.
Обмен сообщениями микроядра.
Динамический пул потоков.
Менеджеры ресурсов.
Литература.