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 at-
       tributes	specified by attr, within a process.  If attr is NULL, the de-
       fault attributes	are used.  If the attributes  specified	 by  attr  are
       modified	 later,	 the  thread's attributes are not affected.  Upon suc-
       cessful 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 ar-
       gument.	If the start_routine returns, the effect is as if there	was an
       implicit	call to	pthread_exit() using the return	value of start_routine
       as the exit status.  Note that the thread in which  main()  was	origi-
       nally  invoked differs from this.  When it returns from main(), the ef-
       fect 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.	Other-
       wise 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
			  another 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
			  scheduling 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
			  kernel  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	14.3			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+14.3-RELEASE+and+Ports>

home | help