[  Страница назад | Страница вперед  |  Содержание  |  Индекс  | Библиотека | 
Юридическая информация | 
Поиск ] 
 
Программирование: Разработка и отладка программ
В этом разделе приведена основная
информация о библиотеке нитей:
В системах 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,  Создание программ с нитями.
Необязательные компоненты библиотеки работы с нитями.
  [  Страница назад | Страница вперед  |  Содержание  |  Индекс  |
 
Библиотека | 
Юридическая информация | 
Поиск  ]