Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages

  
 
  

home | help
PTHREAD_CREATE(3)	     Library Functions Manual	       PTHREAD_CREATE(3)

NAME
     pthread_create -- create a new thread

LIBRARY
     POSIX Threads Library (libpthread, -lpthread)

SYNOPSIS
     #include <pthread.h>

     int
     pthread_create(pthread_t *restrict thread,
	 const pthread_attr_t *restrict attr, void *(*start_routine)(void *),
	 void *restrict arg);

DESCRIPTION
     The  pthread_create() function is used to create a new thread, with attrib-
     utes specified by attr, within a process.	If attr is NULL, the default at-
     tributes are used.  If the attributes specified by attr are modified later,
     the thread's attributes  are  not	affected.   Upon  successful  completion
     pthread_create()  will  store  the ID of the created thread in the location
     specified by thread.

     The thread is created executing start_routine with arg as	its  sole  argu-
     ment.   If  the start_routine returns, the effect is as if there was an im-
     plicit call to pthread_exit() using the return value  of  start_routine  as
     the  exit	status.  Note that the thread in which main() was originally in-
     voked differs from this.  When it returns from main(), the effect is as  if
     there  was  an  implicit call to exit() using the return value of main() as
     the exit status.

     The signal state of the new thread is initialized as:

	   *   The signal mask is inherited from the creating thread.

	   *   The set of signals pending for the new thread is empty.

RETURN VALUES
     If successful, the pthread_create() function will return  zero.   Otherwise
     an error number will be returned to indicate the error.

ERRORS
     The pthread_create() function can return any of the following errors:

     [ENOMEM]		The  system lacked the necessary resources to create an-
			other thread.

     [EAGAIN]		The system-imposed limit on the total number of  threads
			in a process [PTHREAD_THREADS_MAX] would be exceeded.

     [EAGAIN]		The RACCT_NTHR limit would be exceeded; see racct(2).

     [EPERM]		The  caller does not have permission to set the schedul-
			ing parameters or scheduling policy.

     [EINVAL]		A value specified by attr is invalid.

     [EDEADLK]		The CPU set specified by attr would prevent  the  thread
			from running on any CPU.

     [EFAULT]		The stack base specified by attr is invalid, or the ker-
			nel  was  unable  to  put  required  initial data on the
			stack.

SEE ALSO
     cpuset_setaffinity(2),  fork(2),  racct(2),  thr_new(2),	pthread_attr(3),
     pthread_cancel(3),     pthread_cleanup_pop(3),	pthread_cleanup_push(3),
     pthread_exit(3), pthread_join(3)

STANDARDS
     The pthread_create() function conforms to ISO/IEC 9945-1:1996 ("POSIX.1").

FreeBSD ports 15.quarterly	 August 17, 2018	       PTHREAD_CREATE(3)

Want to link to this manual page? Use this URL:
<https://man.freebsd.org/cgi/man.cgi?query=pthread_create&sektion=3&manpath=FreeBSD+15.1-RELEASE+and+Ports.quarterly>

home | help