Cameron Katri's Manual Page Server

Manual Page Search Parameters

PTHREAD(3) Library Functions Manual PTHREAD(3)

pthreadPOSIX thread functions

#include <pthread.h>

POSIX threads are a set of functions that support applications with requirements for multiple flows of control, called , 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:

int (pthread_t *thread, const pthread_attr_t *attr, void *(*start_routine)(void *), void *arg);
Creates a new thread of execution.
int (pthread_t thread)
Cancels execution of a thread.
int (pthread_t thread)
Marks a thread for deletion.
int (pthread_t t1, pthread_t t2)
Compares two thread IDs.
void (void *value_ptr)
Terminates the calling thread.
int (pthread_t thread, void **value_ptr)
Causes the calling thread to wait for the termination of the specified thread.
int (pthread_t thread, int sig)
Delivers a signal to a specified thread.
int (pthread_once_t *once_control, void (*init_routine)(void))
Calls an initialization routine once.
pthread_t (void)
Returns the thread ID of the calling thread.
int (int state, int *oldstate)
Sets the current thread's cancelability state.
int (int type, int *oldtype)
Sets the current thread's cancelability type.
void (void)
Creates a cancellation point in the calling thread.

int (pthread_attr_t *attr)
Destroy a thread attributes object.
int (const pthread_attr_t *attr, int *inheritsched);
Get the inherit scheduling attribute from a thread attributes object.
int (const pthread_attr_t *attr, struct sched_param *param);
Get the scheduling parameter attribute from a thread attributes object.
int (const pthread_attr_t *attr, int *policy)
Get the scheduling policy attribute from a thread attributes object.
int (const pthread_attr_t *attr, int *contentionscope)
Get the contention scope attribute from a thread attributes object.
int (const pthread_attr_t *attr, size_t *stacksize)
Get the stack size attribute from a thread attributes object.
int (const pthread_attr_t *attr, void **stackaddr)
Get the stack address attribute from a thread attributes object.
int (const pthread_attr_t *attr, int *detachstate)
Get the detach state attribute from a thread attributes object.
int (pthread_attr_t *attr)
Initialize a thread attributes object with default values.
int (pthread_attr_t *attr, int inheritsched)
Set the inherit scheduling attribute in a thread attributes object.
int (pthread_attr_t *attr, const struct sched_param *param);
Set the scheduling parameter attribute in a thread attributes object.
int (pthread_attr_t *attr, int policy)
Set the scheduling policy attribute in a thread attributes object.
int (pthread_attr_t *attr, int contentionscope)
Set the contention scope attribute in a thread attributes object.
int (pthread_attr_t *attr, size_t stacksize)
Set the stack size attribute in a thread attributes object.
int (pthread_attr_t *attr, void *stackaddr)
Set the stack address attribute in a thread attributes object.
int (pthread_attr_t *attr, int detachstate)
Set the detach state in a thread attributes object.

int (pthread_mutexattr_t *attr)
Destroy a mutex attributes object.
int (pthread_mutexattr_t *attr, int *ceiling)
Obtain priority ceiling attribute of mutex attribute object.
int (pthread_mutexattr_t *attr, int *protocol)
Obtain protocol attribute of mutex attribute object.
int (pthread_mutexattr_t *attr, int *type)
Obtain the mutex type attribute in the specified mutex attributes object.
int (pthread_mutexattr_t *attr)
Initialize a mutex attributes object with default values.
int (pthread_mutexattr_t *attr, int ceiling)
Set priority ceiling attribute of mutex attribute object.
int (pthread_mutexattr_t *attr, int protocol)
Set protocol attribute of mutex attribute object.
int (pthread_mutexattr_t *attr, int type)
Set the mutex type attribute that is used when a mutex is created.
int (pthread_mutex_t *mutex)
Destroy a mutex.
int (pthread_mutex_t *mutex, const pthread_mutexattr_t *attr);
Initialize a mutex with specified attributes.
int (pthread_mutex_t *mutex)
Lock a mutex and block until it becomes available.
int (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_t *mutex)
Unlock a mutex.

int (pthread_condattr_t *attr)
Destroy a condition variable attributes object.
int (pthread_condattr_t *attr)
Initialize a condition variable attributes object with default values.
int (pthread_cond_t *cond)
Unblock all threads currently blocked on the specified condition variable.
int (pthread_cond_t *cond)
Destroy a condition variable.
int (pthread_cond_t *cond, const pthread_condattr_t *attr)
Initialize a condition variable with specified attributes.
int (pthread_cond_t *cond)
Unblock at least one of the threads blocked on the specified condition variable.
int (pthread_cond_t *cond, pthread_mutex_t *mutex, const struct timespec *abstime);
Unlock the specified mutex, wait no longer than the specified time for a condition, and then relock the mutex.
int (pthread_cond_t *, pthread_mutex_t *mutex)
Unlock the specified mutex, wait for a condition, and relock the mutex.

int (pthread_rwlock_t *lock)
Destroy a read/write lock object.
int (pthread_rwlock_t *lock, const pthread_rwlockattr_t *attr);
Initialize a read/write lock object.
int (pthread_rwlock_t *lock)
Lock a read/write lock for reading, blocking until the lock can be acquired.
int (pthread_rwlock_t *lock)
Attempt to lock a read/write lock for reading, without blocking if the lock is unavailable.
int (pthread_rwlock_t *lock)
Attempt to lock a read/write lock for writing, without blocking if the lock is unavailable.
int (pthread_rwlock_t *lock)
Unlock a read/write lock.
int (pthread_rwlock_t *lock)
Lock a read/write lock for writing, blocking until the lock can be acquired.
int (pthread_rwlockattr_t *attr)
Destroy a read/write lock attribute object.
int (const pthread_rwlockattr_t *attr, int *pshared);
Retrieve the process shared setting for the read/write lock attribute object.
int (pthread_rwlockattr_t *attr)
Initialize a read/write lock attribute object.
int (pthread_rwlockattr_t *attr, int pshared)
Set the process shared setting for the read/write lock attribute object.

int (pthread_key_t *key, void (*routine)(void *))
Create a thread-specific data key.
int (pthread_key_t key)
Delete a thread-specific data key.
void * (pthread_key_t key)
Get the thread-specific value for the specified key.
int (pthread_key_t key, const void *value_ptr)
Set the thread-specific value for the specified key.

int (void (*prepare)(void), void (*parent)(void), void (*child)(void));
Register fork handlers.
void (int execute)
Remove the routine at the top of the calling thread's cancellation cleanup stack and optionally invoke it.
void (void (*routine)(void *), void *routine_arg)
Push the specified cancellation cleanup handler onto the calling thread's cancellation stack.

The default system libraries include pthread functions. No additional libraries or CFLAGS are necessary to use these interfaces.

pthread_atfork(3), pthread_attr(3), pthread_cancel(3), pthread_cleanup_pop(3), pthread_cleanup_push(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_condattr(3), pthread_condattr_destroy(3), pthread_condattr_init(3), pthread_create(3), pthread_detach(3), pthread_equal(3), pthread_exit(3), pthread_getschedparam(3), pthread_getspecific(3), pthread_join(3), pthread_key_create(3), pthread_key_delete(3), pthread_kill(3), pthread_mutex_destroy(3), pthread_mutex_init(3), pthread_mutex_lock(3), pthread_mutex_trylock(3), pthread_mutex_unlock(3), pthread_mutexattr(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_once(3), pthread_rwlock_destroy(3), pthread_rwlock_init(3), pthread_rwlock_rdlock(3), pthread_rwlock_tryrdlock(3), pthread_rwlock_trywrlock(3), pthread_rwlock_unlock(3), pthread_rwlock_wrlock(3), pthread_rwlockattr_destroy(3), pthread_rwlockattr_getpshared(3), pthread_rwlockattr_init(3), pthread_rwlockattr_setpshared(3), pthread_self(3), pthread_setcancelstate(3), pthread_setcanceltype(3), pthread_setspecific(3), pthread_testcancel(3)

The functions with the pthread_ prefix and not _np suffix or pthread_rwlock prefix conform to ISO/IEC 9945-1:1996 (“POSIX.1”).

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 Version 2 of the Single UNIX Specification (“SUSv2”).

August 12, 2014 Darwin