PTHREAD (3) | C library functions | Unix Manual Pages | :man▋
NAME
pthread - POSIX thread functions
CONTENTS
Library Synopsis Description Thread Routines Attribute Object Routines Mutex Routines Condition Variable Routines Read/Write Lock Routines Per-Thread Context Routines Cleanup Routines Installation See Also Standards
LIBRARY
.Lb libpthread .Lb libthr .Lb libc_r
SYNOPSIS
.In pthread.h
DESCRIPTION
POSIX threads are a set of functions that support applications with requirements for multiple flows of control, called threads, within a process. Multithreading is used to improve the performance of a program. The POSIX thread functions are summarized in this section in the following groups: - Thread Routines
- Attribute Object Routines
- Mutex Routines
- Condition Variable Routines
- Read/Write Lock Routines
- Per-Thread Context Routines
- Cleanup Routines
Thread Routines
int .Fo pthread_create "pthread_t *thread" "const pthread_attr_t *attr" "void *lp]*start_routinerp]lp]void *rp]" "void *arg" .Fc | | Creates a new thread of execution. | int pthread_cancel "pthread_t thread" | | Cancels execution of a thread. | int pthread_detach "pthread_t thread" | | Marks a thread for deletion. | int pthread_equal "pthread_t t1" "pthread_t t2" | | Compares two thread IDs. | void pthread_exit "void *value_ptr" | | Terminates the calling thread. | int pthread_join "pthread_t thread" "void **value_ptr" | | Causes the calling thread to wait for the termination of the specified thread. | int pthread_kill "pthread_t thread" "int sig" | | Delivers a signal to a specified thread. | int pthread_once "pthread_once_t *once_control" "void lp]*init_routinerp]lp]voidrp]" | | Calls an initialization routine once. | pthread_t pthread_self void | | Returns the thread ID of the calling thread. | int pthread_setcancelstate "int state" "int *oldstate" | | Sets the current threads cancelability state. | int pthread_setcanceltype "int type" "int *oldtype" | | Sets the current threads cancelability type. | void pthread_testcancel void | | Creates a cancellation point in the calling thread. | void pthread_yield void | | Allows the scheduler to run another thread instead of the current one. | |
Attribute Object Routines
int pthread_attr_destroy "pthread_attr_t *attr" | | Destroy a thread attributes object. | int .Fo pthread_attr_getinheritsched "const pthread_attr_t *attr" "int *inheritsched" .Fc | | Get the inherit scheduling attribute from a thread attributes object. | int .Fo pthread_attr_getschedparam "const pthread_attr_t *attr" "struct sched_param *param" .Fc | | Get the scheduling parameter attribute from a thread attributes object. | int pthread_attr_getschedpolicy "const pthread_attr_t *attr" "int *policy" | | Get the scheduling policy attribute from a thread attributes object. | int pthread_attr_getscope "const pthread_attr_t *attr" "int *contentionscope" | | Get the contention scope attribute from a thread attributes object. | int pthread_attr_getstacksize "const pthread_attr_t *attr" "size_t *stacksize" | | Get the stack size attribute from a thread attributes object. | int pthread_attr_getstackaddr "const pthread_attr_t *attr" "void **stackaddr" | | Get the stack address attribute from a thread attributes object. | int pthread_attr_getdetachstate "const pthread_attr_t *attr" "int *detachstate" | | Get the detach state attribute from a thread attributes object. | int pthread_attr_init "pthread_attr_t *attr" | | Initialize a thread attributes object with default values. | int pthread_attr_setinheritsched "pthread_attr_t *attr" "int inheritsched" | | Set the inherit scheduling attribute in a thread attributes object. | int .Fo pthread_attr_setschedparam "pthread_attr_t *attr" "const struct sched_param *param" .Fc | | Set the scheduling parameter attribute in a thread attributes object. | int pthread_attr_setschedpolicy "pthread_attr_t *attr" "int policy" | | Set the scheduling policy attribute in a thread attributes object. | int pthread_attr_setscope "pthread_attr_t *attr" "int contentionscope" | | Set the contention scope attribute in a thread attributes object. | int pthread_attr_setstacksize "pthread_attr_t *attr" "size_t stacksize" | | Set the stack size attribute in a thread attributes object. | int pthread_attr_setstackaddr "pthread_attr_t *attr" "void *stackaddr" | | Set the stack address attribute in a thread attributes object. | int pthread_attr_setdetachstate "pthread_attr_t *attr" "int detachstate" | | Set the detach state in a thread attributes object. | |
Mutex Routines
int pthread_mutexattr_destroy "pthread_mutexattr_t *attr" | | Destroy a mutex attributes object. | int pthread_mutexattr_getprioceiling "pthread_mutexattr_t *attr" "int *ceiling" | | Obtain priority ceiling attribute of mutex attribute object. | int pthread_mutexattr_getprotocol "pthread_mutexattr_t *attr" "int *protocol" | | Obtain protocol attribute of mutex attribute object. | int pthread_mutexattr_gettype "pthread_mutexattr_t *attr" "int *type" | | Obtain the mutex type attribute in the specified mutex attributes object. | int pthread_mutexattr_init "pthread_mutexattr_t *attr" | | Initialize a mutex attributes object with default values. | int pthread_mutexattr_setprioceiling "pthread_mutexattr_t *attr" "int ceiling" | | Set priority ceiling attribute of mutex attribute object. | int pthread_mutexattr_setprotocol "pthread_mutexattr_t *attr" "int protocol" | | Set protocol attribute of mutex attribute object. | int pthread_mutexattr_settype "pthread_mutexattr_t *attr" "int type" | | Set the mutex type attribute that is used when a mutex is created. | int pthread_mutex_destroy "pthread_mutex_t *mutex" | | Destroy a mutex. | int .Fo pthread_mutex_init "pthread_mutex_t *mutex" "const pthread_mutexattr_t *attr" .Fc | | Initialize a mutex with specified attributes. | int pthread_mutex_lock "pthread_mutex_t *mutex" | | Lock a mutex and block until it becomes available. | int .Fo pthread_mutex_timedlock "pthread_mutex_t *mutex" "const struct timespec *abstime" .Fc | | Lock a mutex and block until it becomes available or until the timeout expires. | int pthread_mutex_trylock "pthread_mutex_t *mutex" | | Try to lock a mutex, but do not block if the mutex is locked by another thread, including the current thread. | int pthread_mutex_unlock "pthread_mutex_t *mutex" | | Unlock a mutex. | |
Condition Variable Routines
int pthread_condattr_destroy "pthread_condattr_t *attr" | | Destroy a condition variable attributes object. | int pthread_condattr_init "pthread_condattr_t *attr" | | Initialize a condition variable attributes object with default values. | int pthread_cond_broadcast "pthread_cond_t *cond" | | Unblock all threads currently blocked on the specified condition variable. | int pthread_cond_destroy "pthread_cond_t *cond" | | Destroy a condition variable. | int pthread_cond_init "pthread_cond_t *cond" "const pthread_condattr_t *attr" | | Initialize a condition variable with specified attributes. | int pthread_cond_signal "pthread_cond_t *cond" | | Unblock at least one of the threads blocked on the specified condition variable. | int .Fo pthread_cond_timedwait "pthread_cond_t *cond" "pthread_mutex_t *mutex" "const struct timespec *abstime" .Fc | | Wait no longer than the specified time for a condition and lock the specified mutex. | int pthread_cond_wait "pthread_cond_t *" "pthread_mutex_t *mutex" | | Wait for a condition and lock the specified mutex. | |
Read/Write Lock Routines
int pthread_rwlock_destroy "pthread_rwlock_t *lock" | | Destroy a read/write lock object. | int .Fo pthread_rwlock_init "pthread_rwlock_t *lock" "const pthread_rwlockattr_t *attr" .Fc | | Initialize a read/write lock object. | int pthread_rwlock_rdlock "pthread_rwlock_t *lock" | | Lock a read/write lock for reading, blocking until the lock can be acquired. | int pthread_rwlock_tryrdlock "pthread_rwlock_t *lock" | | Attempt to lock a read/write lock for reading, without blocking if the lock is unavailable. | int pthread_rwlock_trywrlock "pthread_rwlock_t *lock" | | Attempt to lock a read/write lock for writing, without blocking if the lock is unavailable. | int pthread_rwlock_unlock "pthread_rwlock_t *lock" | | Unlock a read/write lock. | int pthread_rwlock_wrlock "pthread_rwlock_t *lock" | | Lock a read/write lock for writing, blocking until the lock can be acquired. | int pthread_rwlockattr_destroy "pthread_rwlockattr_t *attr" | | Destroy a read/write lock attribute object. | int .Fo pthread_rwlockattr_getpshared "const pthread_rwlockattr_t *attr" "int *pshared" .Fc | | Retrieve the process shared setting for the read/write lock attribute object. | int pthread_rwlockattr_init "pthread_rwlockattr_t *attr" | | Initialize a read/write lock attribute object. | int pthread_rwlockattr_setpshared "pthread_rwlockattr_t *attr" "int pshared" | | Set the process shared setting for the read/write lock attribute object. | |
Per-Thread Context Routines
int pthread_key_create "pthread_key_t *key" "void lp]*routinerp]lp]void *rp]" | | Create a thread-specific data key. | int pthread_key_delete "pthread_key_t key" | | Delete a thread-specific data key. | "void *" pthread_getspecific "pthread_key_t key" | | Get the thread-specific value for the specified key. | int pthread_setspecific "pthread_key_t key" "const void *value_ptr" | | Set the thread-specific value for the specified key. | |
Cleanup Routines
int .Fo pthread_atfork "void lp]*preparerp]lp]voidrp]" "void lp]*parentrp]lp]voidrp]" "void lp]*childrp]lp]voidrp]" .Fc | | Register fork handlers | void pthread_cleanup_pop "int execute" | | Remove the routine at the top of the calling threads cancellation cleanup stack and optionally invoke it. | void pthread_cleanup_push "void lp]*routinerp]lp]void *rp]" "void *routine_arg" | | Push the specified cancellation cleanup handler onto the calling threads cancellation stack. | |
INSTALLATION
The current .Fx POSIX thread implementation is built in three libraries, .Lb libc_r , .Lb libpthread , and .Lb libthr . They contain both thread-safe versions of .Lb libc functions and the thread functions. Threaded applications are linked with one of these libraries.
SEE ALSO
pthread_atfork(3), pthread_cleanup_pop(3), pthread_cleanup_push(3), pthread_condattr_destroy(3), pthread_condattr_init(3), pthread_cond_broadcast(3), pthread_cond_destroy(3), pthread_cond_init(3), pthread_cond_signal(3), pthread_cond_timedwait(3), pthread_cond_wait(3), pthread_create(3), pthread_detach(3), pthread_equal(3), pthread_exit(3), pthread_getspecific(3), pthread_join(3), pthread_key_delete(3), pthread_kill(3), pthread_mutexattr_destroy(3), pthread_mutexattr_getprioceiling(3), pthread_mutexattr_getprotocol(3), pthread_mutexattr_gettype(3), pthread_mutexattr_init(3), pthread_mutexattr_setprioceiling(3), pthread_mutexattr_setprotocol(3), pthread_mutexattr_settype(3), pthread_mutex_destroy(3), pthread_mutex_init(3), pthread_mutex_lock(3), pthread_mutex_trylock(3), pthread_mutex_unlock(3), pthread_once(3), pthread_rwlockattr_destroy(3), pthread_rwlockattr_getpshared(3), pthread_rwlockattr_init(3), pthread_rwlockattr_setpshared(3), pthread_rwlock_destroy(3), pthread_rwlock_init(3), pthread_rwlock_rdlock(3), pthread_rwlock_unlock(3), pthread_rwlock_wrlock(3), pthread_self(3), pthread_setcancelstate(3), pthread_setcanceltype(3), pthread_setspecific(3), pthread_testcancel(3)
STANDARDS
|