[ Bottom of Page | Previous Page | Next Page | Contents | Index | Library Home |
Legal |
Search ]
General Programming Concepts:
Writing and Debugging Programs
Threads Library Quick Reference
This section provides a summary of the threads library:
Supported Interfaces
On AIX systems, _POSIX_THREADS, _POSIX_THREAD_ATTR_STACKADDR,
_POSIX_THREAD_ATTR_STACKSIZE and _POSIX_THREAD_PROCESS_SHARED 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_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 Interfaces
The following is a list of single UNIX specification 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 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
Thread-safety
The following AIX interfaces are not thread-safe.
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
- 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 Library (AIX Specific Functions):
- endfsent
- endttyent
- endutent
- getfsent
- getfsfile
- getfsspec
- getfstype
- getttyent
- getttynam
- getutent
- getutid
- getutline
- pututline
- setfsent
- setttyent
- setutent
- utmpname
libbsd.a library:
libm.a and libmsaa.a libraries:
None of the functions in the following libraries are thread safe:
- libPW.a
- libblas.a
- libcur.a
- libcurses.a
- libplot.a
- libprint.a
The interfaces ctermid and tmpnam are not thread-safe if passed a NULL argument.
Note: Certain subroutines may be implemented
as macros on some systems. You should avoid using the address of threads
subroutines.
Threads Data Types
The following data types are defined for the threads library in the pthread.h header file.
- pthread_t
- Identifies a thread.
- pthread_attr_t
- Identifies a thread attributes object.
- pthread_cond_t
- Identifies a condition variable.
- pthread_condattr_t
- Identifies a condition attributes object.
- pthread_key_t
- Identifies a thread-specific data key.
- pthread_mutex_t
- Identifies a mutex.
- pthread_mutexattr_t
- Identifies a mutex attributes object.
- pthread_once_t
- Identifies a one time initialization object.
The definition of these data types can vary from one system to another.
Limits and Default Values
The threads library has some implementation-dependent
limits and default values. These limits and default values can be retrieved
by symbolic constants to enhance the portability of programs.
Maximum Number of Threads per Process
The maximum number of threads per process is 512. The
maximum number of threads can be retrieved at compilation time using the PTHREAD_THREADS_MAX symbolic constant defined in the pthread.h header file. If an application is compiled with
the -D_LARGE_THREADS flag, the maximum number of threads
per process is 32767.
Minimum Stack Size
The minimum stack size for a thread is 8 K. The default
stack size is 96 KB. This number can be retrieved at compilation time using
the PTHREAD_STACK_MIN symbolic constant defined in the pthread.h header file.
Note that the maximum stack size is 256MB, the size
of a segment. This limit is indicated by the PTHREAD_STACK_MAX symbolic constant in the pthread.h header file.
Maximum Number of Thread-Specific Data Keys
The number of thread-specific data keys is limited
to 508. This number can be retrieved at compilation time using the PTHREAD_KEYS_MAX symbolic constant defined in the pthread.h header file.
Default Attribute Values
The default values for the thread attributes object
are defined in the pthread.h header file by the following
symbolic constants:
- DEFAULT_DETACHSTATE
- PTHREAD_CREATE_DETACHED. Specifies the default
value for the detachstate attribute.
- DEFAULT_DETACHSTATE
- PTHREAD_CREATE_JOINABLE. Specifies the default
value for the joinable state.
- DEFAULT_INHERIT
- PTHREAD_INHERIT_SCHED. Specifies the default value
for the inheritsched attribute.
- DEFAULT_PRIO
- 1 (one). Specifies the default value for the sched_prio field of the schedparam attribute.
- DEFAULT_SCHED
- SCHED_OTHER. Specifies the default value for
the schedpolicy attribute of a thread attributes object.
- DEFAULT_SCOPE
- PTHREAD_SCOPE_LOCAL. Specifies the default value
for the contention-scope attribute.
The actual values shown might vary from one release
to another.
Related Information
Threads Programming Guidelines.
Threads Library Options.
[ Top of Page | Previous Page | Next Page | Contents | Index | Library Home |
Legal |
Search ]