Supported interfaces

On AIX® systems, the _POSIX_THREADS, _POSIX_THREAD_ATTR_STACKADDR, _POSIX_THREAD_ATTR_STACKSIZE and _POSIX_THREAD_PROCESS_SHARED symbols are always defined.

Therefore, the following threads interfaces are supported.

POSIX interfaces

The following is a list of POSIX interfaces:
  • pthread_atfork
  • pthread_attr_destroy
  • pthread_attr_getdetachstate
  • pthread_attr_getschedparam
  • pthread_attr_getstacksize
  • pthread_attr_getstackaddr
  • pthread_attr_init
  • pthread_attr_setdetachstate
  • 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
  • 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
  • sigwait

Single UNIX Specification, Version 2 Interfaces

The following is a list of Single UNIX Specification, Version 2 interfaces:
  • 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
On AIX systems, _POSIX_THREAD_SAFE_FUNCTIONS symbol is always defined. Therefore, the following interfaces are always supported:
  • 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 does not support the following interfaces; the symbols are provided but they always return an error and set the errno to ENOSYS:
  • pthread_mutex_getprioceiling
  • pthread_mutex_setprioceiling
  • pthread_mutexattr_getprioceiling
  • pthread_mutexattr_getprotocol
  • pthread_mutexattr_setprioceiling
  • pthread_mutexattr_setprotocol

Non-threadsafe interfaces

libc.a library (standard functions):
  • 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
  • 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

The following AIX interfaces are not threadsafe.

libc.a Library (AIX-specific functions):
  • endfsent
  • endttyent
  • endutent
  • getfsent
  • getfsfile
  • getfsspec
  • getfstype
  • getttyent
  • getttynam
  • getutent
  • getutid
  • getutline
  • pututline
  • setfsent
  • setttyent
  • setutent
  • utmpname
libbsd.a library:
  • timezone

libm.a and libmsaa.a libraries:

  • gamma
  • lgamma
None of the functions in the following libraries are threadsafe:
  • libPW.a
  • libblas.a
  • libcur.a
  • libcurses.a
  • libplot.a
  • libprint.a

The ctermid and tmpnam interfaces are not threadsafe if they are passed a NULL argument.

In a multi-threaded program it is not recommended to execute setlocale() subroutine simultaneously from multiple threads if one of the threads calls setlocale() subroutine from within a module-initialization routine.

Note: Certain subroutines may be implemented as macros on some systems. Avoid using the address of threads subroutines.