[ Страница назад | Страница вперед | Содержание | Индекс | Библиотека | Юридическая информация | Поиск ]

Программирование: Разработка и отладка программ


Краткая справка по библиотеке работы с нитями

В этом разделе приведена основная информация о библиотеке нитей:

Поддерживаемые интерфейсы

В системах AIX символьные константы _POSIX_THREADS, _POSIX_THREAD_ATTR_STACKADDR, _POSIX_THREAD_ATTR_STACKSIZE и _POSIX_THREAD_PROCESS_SHARED определены всегда. Следовательно, поддерживаются следующие интерфейсы работы с нитями:

Интерфейсы POSIX

Ниже приведен список интерфейсов POSIX:

Интерфейсы Single UNIX Specification

Ниже приведен список интерфейсов single UNIX specification:

В системах AIX символьная константа _POSIX_THREAD_SAFE_FUNCTIONS определена всегда. Следовательно, всегда поддерживаются следующие интерфейсы:

Перечисленные ниже интерфейсы не поддерживаются в AIX; их идентификаторы есть в системе, но попытка обратиться к ним всегда приводит к ошибке с errno = ENOSYS:

Защита нитей

Перечисленные ниже интерфейсы AIX не обеспечивают защиту нитей.

Библиотека libc.a (стандартные функции):

Библиотека libc.a (специальные функции AIX):

Библиотека libbsd.a:

Библиотеки libm.a и libmsaa.a:

Библиотеки, ни одна функция в которых не обеспечивает защиту нитей:

Интерфейсы ctermid и tmpnam не обеспечивают защиту нитей при передаче аргумента NULL.

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

Типы данных библиотеки нитей

Перечисленные ниже типы данных определены для работы с библиотекой нитей в файле заголовка pthread.h.

pthread_t
Идентифицирует нить.

pthread_attr_t
Идентифицирует объект атрибутов нити.

pthread_cond_t
Идентифицирует условную переменную.

pthread_condattr_t
Идентифицирует объект атрибутов условной переменной.

pthread_key_t
Идентифицирует ключ данных для конкретной нити.

pthread_mutex_t
Идентифицирует взаимную блокировку.

pthread_mutexattr_t
Идентифицирует объект атрибутов взаимной блокировки.

pthread_once_t
Идентифицирует объект однократной инициализации.

Определения этих типов данных могут быть различными в различных системах.

Ограничения и значения по умолчанию

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

Максимальное число нитей одного процесса

В процессе не может быть более 512 нитей. Максимальное количество нитей можно получить на этапе компиляции с помощью символьной константы PTHREAD_THREADS_MAX, определенной в файле заголовка pthread.h.

Минимальный размер стека

Минимальный размер стека для одной нити составляет 96 Кб. Это одновременно и размер стека по умолчанию. Минимальный размер стека можно получить на этапе компиляции с помощью символьной константы PTHREAD_STACK_MIN, определенной в файле заголовка pthread.h.

Заметим, что максимальный размер стека составляет 256 Мб, что равно размеру сегмента. Это ограничение можно получить с помощью символьной константы PTHREAD_STACK_MAX в файле заголовка pthread.h.

Максимальное число ключей данных для нити

Максимальное значение этого параметра - 508. Это значение можно получить на этапе компиляции с помощью символьной константы PTHREAD_KEYS_MAX, определенной в файле заголовка pthread.h.

Значения атрибутов по умолчанию

Значения атрибутов нитей по умолчанию определены в файле заголовка pthread.h и связаны со следующими символьными константами:

DEFAULT_DETACHSTATE
PTHREAD_CREATE_DETACHED. Значение атрибута detachstate по умолчанию.

DEFAULT_INHERIT
PTHREAD_INHERIT_SCHED. Значение атрибута inheritsched по умолчанию.

DEFAULT_PRIO
1 (единица). Значение поля sched_prio атрибута schedparam по умолчанию.

DEFAULT_SCHED
SCHED_OTHER. Значение атрибута schedpolicy в объекте атрибутов нити по умолчанию.

DEFAULT_SCOPE
PTHREAD_SCOPE_LOCAL. Значение атрибута contention-scope по умолчанию.

В различных версиях значения по умолчанию могут быть различными.

Связанная информация

Глава 11, Создание программ с нитями.

Необязательные компоненты библиотеки работы с нитями.


[ Страница назад | Страница вперед | Содержание | Индекс | Библиотека | Юридическая информация | Поиск ]