Multithreaded Programming Guide

Create a Default Thread

When an attribute object is not specified, it is NULL, and the default thread is created with the following attributes:

You can also create a default attribute object with pthread_attr_init(), and then use this attribute object to create a default thread. See the section Initialize Attributesfor details.


Use pthread_create(3THR) to add a new thread of control to the current process.

int	pthread_create(pthread_t *tid, const pthread_attr_t *tattr,
    void*(*start_routine)(void *), void *arg);
#include <pthread.h>

pthread_attr_t ()tattr;
pthread_t tid;
extern void *start_routine(void *arg);
void *arg;
int ret; 

/* default behavior*/
ret = pthread_create(&tid, NULL, start_routine, arg);

/* initialized with default attributes */
ret = pthread_attr_init(&tattr);
/* default behavior specified*/
ret = pthread_create(&tid, &tattr, start_routine, arg);

The pthread_create() function is called with attr having the necessary state behavior. start_routine is the function with which the new thread begins execution. When start_routine returns, the thread exits with the exit status set to the value returned by start_routine (see pthread_create(3THR)).

When pthread_create() is successful, the ID of the thread created is stored in the location referred to as tid.

Creating a thread using a NULL attribute argument has the same effect as using a default attribute; both create a default thread. When tattr is initialized, it acquires the default behavior.

Return Values

pthread_create() returns zero when it completes successfully. Any other return value indicates that an error occurred. When any of the following conditions are detected, pthread_create() fails and returns the corresponding value.


A system limit is exceeded, such as when too many LWPs have been created.


The value of tattr is invalid.