177 lines
6.2 KiB
Groff
177 lines
6.2 KiB
Groff
.\" $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 <hubertf@NetBSD.org> and Thomas Klausner <wiz@NetBSD.org>.
|
|
.\"
|
|
.\" 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).
|