< c‎ | thread
Defined in header <threads.h>
int thrd_create( thrd_t *thr, thrd_start_t func, void *arg );
(since C11)

Creates a new thread executing the function func. The function is invoked as func(arg).

If successful, the object pointed to by thr is set to the identifier of the new thread.

The completion of this function synchronizes-with the beginning of the thread.


thr - pointer to memory location to put the identifier of the new thread
func - function to execute
arg - argument to pass to the function

Return value

thrd_success if the creation of the new thread was successful. Otherwise returns thrd_nomem if there was insufficient amount of memory or thrd_error if another error occurred.


The thread identifiers may be reused for new threads once the thread has finished and joined or detached.

The type thrd_start_t is a typedef of int(*)(void*), which differs from the POSIX equivalent void*(*)(void*)

All thread-specific storage values (see tss_create) are initialized to NULL.

Return from the function func is equivalent to calling thrd_exit with the argument equal to the return value of func.


  • C11 standard (ISO/IEC 9899:2011):
  • The thrd_create function (p: 383)

See also

detaches a thread
blocks until a thread terminates