\" $NetBSD: pthread.3,v 1.18 2017/10/23 01:03:23 wiz Exp $
\"
\" Copyright (c) 2003, 2007, 2009 The NetBSD Foundation, Inc.
\" All rights reserved.
\"
\" This code is derived from software contributed to The NetBSD Foundation
\" by Hubert Feyrer <
[email protected]> and Thomas Klausner <
[email protected]>.
\"
\" Redistribution and use in source and binary forms, with or without
\" modification, are permitted provided that the following conditions
\" are met:
\" 1. Redistributions of source code must retain the above copyright
\" notice, this list of conditions and the following disclaimer.
\" 2. Redistributions in binary form must reproduce the above copyright
\" notice, this list of conditions and the following disclaimer in the
\" documentation and/or other materials provided with the distribution.
\"
\" THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
\" ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
\" TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
\" PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
\" BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
\" CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
\" SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
\" INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
\" CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
\" ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
\" POSSIBILITY OF SUCH DAMAGE.
\"
Dd November 22, 2016
Dt PTHREAD 3
Os
Sh NAME
Nm pthread
Nd POSIX Threads Library
Sh LIBRARY
Lb libpthread
Sh SYNOPSIS
In pthread.h
Pp
Nm cc
Op Ar flags
Ar files
Fl lpthread
Op Ar libraries
Sh DESCRIPTION
The
Nm
library provides an implementation of the standard POSIX threads
library.
Pp
The
Nx
implementation is based on 1:1 thread model, therefore each
Nm
has a kernel thread, called a light-weight process (LWP).
Pp
Note that the system private thread interfaces upon which the
Nm
library is built are subject to change without notice.
In order to remain compatible with future
Nx
releases, programs must be linked against the dynamic version of the
thread library.
Statically linked programs using the POSIX
threads framework may not work when run on a future version of the system.
Sh FUNCTIONS
The following functions comprise the core of the
Nm
library:
Bl -column -offset indent "pthread_barrier_destroy(3)" "XXX"
It Sy Function Ta Sy Description
It Xr pthread_attr 3 Ta thread attribute operations
It Xr pthread_barrier_destroy 3 Ta destroy a barrier
It Xr pthread_barrier_init 3 Ta create a barrier
It Xr pthread_barrier_wait 3 Ta wait for a barrier
It Xr pthread_barrierattr 3 Ta barrier attribute operations
It Xr pthread_cancel 3 Ta cancel the execution of a thread
It Xr pthread_cleanup_push 3 Ta add or remove cleanup functions
It Xr pthread_cond_broadcast 3 Ta unblock one or more threads
It Xr pthread_cond_destroy 3 Ta destroy a condition variable
It Xr pthread_cond_init 3 Ta create a condition variable
It Xr pthread_cond_wait 3 Ta wait for a condition variable
It Xr pthread_condattr 3 Ta condition attribute operations
It Xr pthread_create 3 Ta create a new thread
It Xr pthread_detach 3 Ta detach a thread
It Xr pthread_equal 3 Ta compare thread identifiers
It Xr pthread_exit 3 Ta terminate the calling thread
It Xr pthread_getspecific 3 Ta get a thread-specific data value
It Xr pthread_join 3 Ta wait for thread termination
It Xr pthread_key_create 3 Ta thread-specific data key creation
It Xr pthread_key_delete 3 Ta delete a thread-specific data key
It Xr pthread_kill 3 Ta send a signal to a specific thread
It Xr pthread_mutex_destroy 3 Ta free a mutex
It Xr pthread_mutex_init 3 Ta create a mutex
It Xr pthread_mutex_lock 3 Ta acquire a lock on a mutex
It Xr pthread_mutex_unlock 3 Ta unlock a mutex
It Xr pthread_mutexattr 3 Ta mutex attribute operations
It Xr pthread_once 3 Ta dynamic package initialization
It Xr pthread_rwlock_destroy 3 Ta destroy a read/write lock
It Xr pthread_rwlock_init 3 Ta initialize a read/write lock
It Xr pthread_rwlock_rdlock 3 Ta acquire a read/write lock for reading
It Xr pthread_rwlock_unlock 3 Ta release a read/write lock
It Xr pthread_rwlock_wrlock 3 Ta acquire a read/write lock for writing
It Xr pthread_rwlockattr 3 Ta read/write lock attribute operations
It Xr pthread_schedparam 3 Ta thread scheduling manipulation
It Xr pthread_self 3 Ta get the ID of the calling thread
It Xr pthread_setspecific 3 Ta get a thread-specific data value
It Xr pthread_sigmask 3 Ta manipulate a thread's signal mask
It Xr pthread_spin_destroy 3 Ta destroy a spin lock
It Xr pthread_spin_init 3 Ta initialize a spin lock
It Xr pthread_spin_lock 3 Ta acquire a spin lock
It Xr pthread_spin_unlock 3 Ta release a spin lock
It Xr pthread_testcancel 3 Ta set cancelability state
El
Sh ENVIRONMENT
The following environment variables affect the behavior of the library:
Bl -tag -width "XXX"
It Ev PTHREAD_DIAGASSERT
Possible values are any combinations of:
Pp
Bl -tag -width "X " -offset 1n -compact
It Em A
Report errors to application by error return, but do not abort.
It Em a
Abort on errors, creating a core dump for further debugging.
It Em E
Do not log errors to stdout.
It Em e
Log errors to stdout.
It Em L
Do not log errors via
Xr syslogd 8 .
It Em l
Log errors via
Xr syslogd 8 .
El
Pp
If not set in the environment, the
Nm
library behaves as if
Em AEL
has been specified.
It Ev PTHREAD_STACKSIZE
Integer value giving the stack size in kilobytes.
This allows to set a smaller stack size than the default stack size.
The default stack size is the current limit on the stack size as
set with the shell's command to change limits
Ic ( limit
for
Xr csh 1 ,
or
Ic ulimit
for
Xr sh 1 ) .
El
Sh SEE ALSO
Rs
%A David R. Butenhof
%T Programming with POSIX(R) Threads
%D 1997
%I Addison-Wesley
Re
Sh STANDARDS
The
Nm
library conforms to
St -p1003.1-2001 .
Sh CAVEATS
Due to limitations in the current pthread implementation,
Xr makecontext 3
and
Xr sigaltstack 2
should not be used in programs which link against the
Nm
library (whether threads are used or not).