xref: /openbsd-src/lib/libpthread/man/pthread_create.3 (revision ce7e0fc6a9d74d25b78fb6ad846387717f5172b6)
1.\" $OpenBSD: pthread_create.3,v 1.9 2002/05/01 08:03:30 mpech Exp $
2.\"
3.\" Copyright (c) 1996 John Birrell <jb@cimlogic.com.au>.
4.\" All rights reserved.
5.\"
6.\" Redistribution and use in source and binary forms, with or without
7.\" modification, are permitted provided that the following conditions
8.\" are met:
9.\" 1. Redistributions of source code must retain the above copyright
10.\"    notice, this list of conditions and the following disclaimer.
11.\" 2. Redistributions in binary form must reproduce the above copyright
12.\"    notice, this list of conditions and the following disclaimer in the
13.\"    documentation and/or other materials provided with the distribution.
14.\" 3. All advertising materials mentioning features or use of this software
15.\"    must display the following acknowledgement:
16.\"	This product includes software developed by John Birrell.
17.\" 4. Neither the name of the author nor the names of any co-contributors
18.\"    may be used to endorse or promote products derived from this software
19.\"    without specific prior written permission.
20.\"
21.\" THIS SOFTWARE IS PROVIDED BY JOHN BIRRELL AND CONTRIBUTORS ``AS IS'' AND
22.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
23.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
24.\" ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
25.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
26.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
27.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
28.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
29.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
30.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
31.\" SUCH DAMAGE.
32.\"
33.\" $FreeBSD: pthread_create.3,v 1.8 1999/08/28 00:03:04 peter Exp $
34.\"
35.Dd April 4, 1996
36.Dt PTHREAD_CREATE 3
37.Os
38.Sh NAME
39.Nm pthread_create
40.Nd create a new thread
41.Sh SYNOPSIS
42.Fd #include <pthread.h>
43.Ft int
44.Fn pthread_create "pthread_t *thread" "const pthread_attr_t *attr" "void *(*start_routine)(void *)" "void *arg"
45.Sh DESCRIPTION
46The
47.Fn pthread_create
48function is used to create a new thread, with attributes specified by
49.Fa attr ,
50within a process.
51If
52.Fa attr
53is NULL, the default attributes are used. If the attributes specified by
54.Fa attr
55are modified later, the thread's attributes are not affected.
56Upon successful completion
57.Fn pthread_create
58will store the ID of the created thread in the location specified by
59.Fa thread .
60.Pp
61The thread is created executing
62.Fa start_routine
63with
64.Fa arg
65as its sole argument.
66If the
67.Fa start_routine
68returns, the effect is as if there was an implicit call to
69.Fn pthread_exit
70using the return value of
71.Fa start_routine
72as the exit status.
73Note that the thread in which
74.Fn main
75was originally invoked differs from this.
76When it returns from
77.Fn main ,
78the effect is as if there was an implicit call to
79.Fn exit
80using the return value of
81.Fn main
82as the exit status.
83.Pp
84The signal state of the new thread is initialized as:
85.Bl -bullet -offset indent
86.It
87The signal mask is inherited from the creating thread.
88.It
89The set of signals pending for the new thread is empty.
90.El
91.Sh RETURN VALUES
92If successful, the
93.Fn pthread_create
94function will return zero.
95Otherwise an error number will be returned to indicate the error.
96.Sh ERRORS
97.Fn pthread_create
98will fail if:
99.Bl -tag -width Er
100.It Bq Er EAGAIN
101The system lacked the necessary resources to create another thread, or
102the system-imposed limit on the total number of threads in a process
103[PTHREAD_THREADS_MAX] would be exceeded.
104.It Bq Er EINVAL
105The value specified by
106.Fa attr
107is invalid.
108.El
109.Sh SEE ALSO
110.Xr fork 2 ,
111.Xr pthread_attr_init 3 ,
112.Xr pthread_attr_setdetachstate 3 ,
113.Xr pthread_attr_setstackaddr 3 ,
114.Xr pthread_attr_setstacksize 3 ,
115.Xr pthread_cleanup_pop 3 ,
116.Xr pthread_cleanup_push 3 ,
117.Xr pthread_exit 3 ,
118.Xr pthread_join 3
119.Sh STANDARDS
120.Fn pthread_create
121conforms to
122.St -p1003.1-96 .
123