[ Страница назад | Страница вперед | Содержание | Индекс | Библиотека |
Юридическая информация |
Поиск ]
Программирование: Разработка и отладка программ
В этом разделе приведена основная
информация о библиотеке нитей:
В системах AIX символьные константы
_POSIX_THREADS, _POSIX_THREAD_ATTR_STACKADDR, _POSIX_THREAD_ATTR_STACKSIZE и
_POSIX_THREAD_PROCESS_SHARED определены всегда. Следовательно,
поддерживаются следующие интерфейсы работы с нитями:
Ниже приведен список интерфейсов POSIX:
- pthread_atfork
- pthread_attr_destroy
- pthread_attr_getdetachstate
- pthread_attr_getschedparam
- pthread_attr_getstacksize
- pthread_attr_getstackaddr
- pthread_attr_setdetachstate
- pthread_attr_init
- pthread_attr_setschedparam
- pthread_attr_setstackaddr
- pthread_attr_setstacksize
- pthread_cancel
- pthread_cleanup_pop
- pthread_cleanup_push
- pthread_detach
- pthread_equal
- pthread_exit
- pthread_getspecific
- pthread_join
- pthread_key_create
- pthread_key_delete
- pthread_kill
- pthread_mutex_destroy
- pthread_mutex_init
- pthread_mutex_lock
- pthread_mutex_trylock
- pthread_mutex_unlock
- pthread_mutexattr_destroy
- pthread_mutexattr_getpshared
- pthread_mutexattr_init
- pthread_mutexattr_setpshared
- pthread_once
- pthread_self
- pthread_setcancelstate
- pthread_setcanceltype
- pthread_setspecific
- pthread_sigmask
- pthread_testcancel
- sigwait
- pthread_cond_broadcast
- pthread_cond_destroy
- pthread_cond_init
- pthread_cond_signal
- pthread_cond_timedwait
- pthread_cond_wait
- pthread_condattr_destroy
- pthread_condattr_getpshared
- pthread_condattr_init
- pthread_condattr_setpshared
- pthread_create
Ниже приведен список интерфейсов single UNIX specification:
- pthread_attr_getguardsize
- pthread_attr_setguardsize
- pthread_getconcurrency
- pthread_mutexattr_gettype
- pthread_mutexattr_settype
- pthread_rwlock_destroy
- pthread_rwlock_init
- pthread_rwlock_rdlock
- pthread_rwlock_tryrdlock
- pthread_rwlock_trywrlock
- pthread_rwlock_unlock
- pthread_rwlock_wrlock
- pthread_rwlockattr_destroy
- pthread_rwlockattr_getpshared
- pthread_rwlockattr_init
- pthread_rwlockattr_setpshared
- pthread_setconcurrency
В системах AIX символьная константа
_POSIX_THREAD_SAFE_FUNCTIONS определена всегда. Следовательно, всегда
поддерживаются следующие интерфейсы:
- asctime_r
- ctime_r
- flockfile
- ftrylockfile
- funlockfile
- getc_unlocked
- getchar_unlocked
- getgrgid_r
- getgrnam_r
- getpwnam_r
- getpwuid_r
- gmtime_r
- localtime_r
- putc_unlocked
- putchar_unlocked
- rand_r
- readdir_r
- strtok_r
Перечисленные ниже интерфейсы не
поддерживаются в AIX; их идентификаторы есть в системе, но попытка
обратиться к ним всегда приводит к ошибке с errno = ENOSYS:
- pthread_attr_getinheritsched
- pthread_attr_getschedpolicy
- pthread_attr_getscope
- pthread_attr_setinheritsched
- pthread_attr_setschedpolicy
- pthread_attr_setscope
- pthread_getschedparam
- pthread_mutex_getprioceiling
- pthread_mutex_setprioceiling
- pthread_mutexattr_getprioceiling
- pthread_mutexattr_getprotocol
- pthread_mutexattr_setprioceiling
- pthread_mutexattr_setprotocol
- pthread_setschedparam
Перечисленные ниже интерфейсы AIX не обеспечивают защиту нитей.
Библиотека libc.a (стандартные функции):
- advance
- asctime
- brk
- catgets
- chroot
- compile
- ctime
- cuserid
- dbm_clearerr
- dbm_close
- dbm_delete
- dbm_error
- dbm_fetch
- dbm_firstkey
- dbm_nextkey
- dbm_open
- dbm_store
- dirname
- drand48
- ecvt
- encrypt
- endgrent
- endpwent
- endutxent
- fcvt
- gamma
- gcvt
- getc_unlocked
- getchar_unlocked
- getdate
- getdtablesize
- getgrent
- getgrgid
- getgrnam
- getlogin
- getopt
- getpagesize
- getpass
- getpwent
- getpwnam
- getpwuid
- getutxent
- getutxid
- getutxline
- getw
- getw
- gmtime
- l64a
- lgamma
- localtime
- lrand48
- mrand48
- nl_langinfo
- ptsname
- putc_unlocked
- putchar_unlocked
- putenv
- pututxline
- putw
- rand
- random
- readdir
- re_comp
- re_exec
- regcmp
- regex
- sbrk
- setgrent
- setkey
- setpwent
- setutxent
- sigstack
- srand48
- srandom
- step
- strerror
- strtok
- ttyname
- ttyslot
- wait3
Библиотека libc.a (специальные функции AIX):
- endfsent
- endttyent
- endutent
- getfsent
- getfsfile
- getfsspec
- getfstype
- getttyent
- getttynam
- getutent
- getutid
- getutline
- pututline
- setfsent
- setttyent
- setutent
- utmpname
Библиотека libbsd.a:
Библиотеки libm.a и libmsaa.a:
Библиотеки, ни одна функция в которых не обеспечивает защиту нитей:
- libPW.a
- libblas.a
- libcur.a
- libcurses.a
- libplot.a
- libprint.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, Создание программ с нитями.
Необязательные компоненты библиотеки работы с нитями.
[ Страница назад | Страница вперед | Содержание | Индекс |
Библиотека |
Юридическая информация |
Поиск ]