Creates a thread object and thread.
pthread_create( thread, attr, start_routine, arg );
Argument Data Type Accessthread opaque pthread_t write attr opaque pthread_attr_t read start_routine procedure read arg opaque pthread_addr_t read
int pthread_create ( pthread_t *thread, pthread_attr_t attr, pthread_startroutine_t start_routine, pthread_addr_t arg);
Calling this routine sets into motion the following actions:
A thread is created in the ready state and therefore might immediately begin executing the function specified by the start_routine argument. The newly created thread may preempt its creator 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 might also be before pthread_create returns.
The new thread's scheduling policy and priority are, by default, inherited from the creating thread-the scheduling policy and priority set in the attributes object are ignored. To create a thread using the scheduling policy and priority set in the attributes object, you must first disable the inherit scheduling attribute by calling pthread_attr_setinheritsched.
The start_routine is passed a copy of the arg argument. The value of the arg argument is specified by the calling application code.
The thread object exists until the pthread_detach routine is called or the thread terminates, whichever occurs last.
Synchronization between the caller of pthread_create and the newly created thread is done through the use of the pthread_join routine (or any other mutexes or condition variables they agree to use).
Return Error Description0 Successful completion. -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 temporary condition.