 |
|
| |
Manual Reference Pages - PTHREAD (3)
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
The functions with the
pthread_
prefix and not
_np
suffix or
pthread_rwlock
prefix conform to
-p1003.1-96.
The functions with the
pthread_
prefix and
_np
suffix are non-portable extensions to POSIX threads.
The functions with the
pthread_rwlock
prefix are extensions created by The Open Group as part of the
-susv2.
| January 15, 2004 | PTHREAD (3) | |
Visit the GSP FreeBSD Man Page Interface. Output converted with manServer 1.07.
|