| THRD(3) | Library Functions Manual | THRD(3) | 
thrd —
#include <threads.h>
typedef int (*thrd_start_t) (void *)
int
  
  thrd_create(thrd_t
    *thr, thrd_start_t
    func, void
  *arg);
thrd_t
  
  thrd_current(void);
int
  
  thrd_detach(thrd_t
    thr);
int
  
  thrd_equal(thrd_t
    t1, thrd_t t2);
_Noreturn void
  
  thrd_exit(int
    res);
int
  
  thrd_join(thrd_t
    thr, int *res);
int
  
  thrd_sleep(const
    struct timespec *duration,
    struct timespec
    *remaining);
void
  
  thrd_yield(void);
thrd interface operates over opaque objects of the
  thrd_t type.
The thrd_create() function is used to
    create a new thread, calling func with the
    arg parameter. This function initializes the
    thr object with the identifier of the newly created
    thread. The completion of thrd_create() is
    synchronized with the start of the newly produced thread. It is possible to
    reuse the thr object once the thread has terminated
    either by joining another thread operation or been detached.
The thrd_current() function returns the
    thread identifier of the current thread.
The thrd_detach() function is used to
    indicate that storage for the thr object can be
    reclaimed on the thread's termination. The thr object
    cannot be already detached or joined.
The thrd_equal() function is used to check
    whether two t1 and t2 objects
    refer to the same thread.
The thrd_exit() function terminates the
    calling thread and passes the res value that might be
    read by the thrd_join() function. The program
    terminates once all threads have been terminated with an exit code
    equivalent to calling the
    exit(3) function with the
    EXIT_SUCCESS status. The
    thrd_join() function joins the
    thr thread, waiting and blocking until it has
    terminated. The res parameter points to a variable
    that will store the status passed from the joined function. If
    res is NULL then the status
    from the thrd_exit() function is ignored.
The thrd_sleep() function suspends
    execution of the calling thread until either a signal is received or the
    interval specified in the duration argument has been
    passed. The remaining parameter stores requested
    timeout reduced with the time actually suspended. This argument is used when
    thrd_sleep() has been interrupted. It is valid code
    to point both arguments duration and
    remaining to the same object. It is not guaranteed
    that sleep will not take longer than specified in
    duration, however unless interrupted with a signal it
    will not take shorter than the specified interval.
The thrd_yield() function yields a process
    voluntarily and gives other threads a chance to run without waiting for any
    involuntary preemptive switch.
thrd_create() function returns
  thrd_success on success, otherwise
  thrd_nomem if not sufficient memory could be
  allocated, or thrd_error on other errors.
The thrd_current() function returns the
    identifier of the calling thread.
The thrd_detach() function returns
    thrd_current on success or
    thrd_error on failure.
The thrd_equal() function returns zero if
    t0 and t1 refer to the different
    threads, otherwise it will return non-zero.
The thrd_exit() function does not
  return.
The thrd_join() function returns
    thrd_success on success or
    thrd_error on failure.
The thrd_sleep() function returns 0 on
    success (as the requested time has elapsed), -1 once the function was
    interrupted by a signal, or a negative value to indicate error. The
    NetBSD implementation returns -2 on error.
The thrd_yield() function returns no
    value.
thrd interface conforms to ISO/IEC
  9899:2011 (“ISO C11”).
| October 16, 2016 | NetBSD 10.0 |