pthread_create(3thr)pthread_create(3thr)Namepthread_create - Creates a thread object and thread.
Syntax
#include <pthread.h>
int pthread_create (thread, attr, start_routine, arg)
pthread_t *thread;
pthread_attr_t attr;
pthread_startroutine_t start_routine;
pthread_addr_t arg;
Arguments
thread Thread object created.
attr Thread attributes object that defines the characteristics of
the thread being created. If you specify pthread_attr_default,
default attributes are used.
start_routine
Function executed as the new thread's start routine.
arg Address value copied and passed to the thread's start routine.
Description
This routine creates a thread object and a thread. A thread is a sin‐
gle, sequential flow of control within a program. It is the active exe‐
cution of a designated routine, including any nested routine invoca‐
tions. A thread object defines and controls the executing thread.
Calling this routine sets into motion the following actions:
· An internal thread object is created to describe the thread.
· The associated executable thread is created with attributes
specified by the attr argument (or with default attributes if
pthread_attr_default is specified).
· The thread argument receives the new thread.
· The start_routine function is called when this routine suc‐
cessfully completes.
The thread is created in the ready state and therefore might immedi‐
ately begin executing the function specified by the start_routine argu‐
ment. The newly created thread will begin running before pthread_cre‐
ate completes if the new thread follows the SCHED_RR or SCHED_FIFO
scheduling policy or has a priority higher than the creating thread, or
both. Otherwise, the new thread begins running at its turn, which with
sufficient processors, might also be before pthread_create returns.
The start_routine is passed a copy of the arg argument. The value of
the arg argument is unspecified.
The thread object exists until the pthread_detach routine is called or
the thread terminates, whichever occurs last.
The synchronization between the caller of pthread_create and the newly
created thread is through the use of the pthread_join routine (or any
other mutexes or condition variables they agree to use).
Return Values
If an error condition occurs, no thread is created, the contents of
thread are undefined, and this routine returns -1 and sets errno to the
corresponding error value. Possible return values are as follows.
Return Error Description
0 Successful comple‐
tion.
-1 [EAGAIN] The system lacks
the necessary
resources to create
another thread.
The system-imposed
limit on the total
number of threads
under execution by
a single user is
exceeded.
-1 [ENOMEM] Insufficient memory
exists to create
the thread
attributes object.
This is not a tem‐
porary condition.
pthread_create(3thr)