Namespaces
Variants

Standard library header <threads.h> (C11)

From cppreference.net

Este encabezado es parte de la biblioteca de soporte de concurrencia y proporciona soporte para hilos, exclusión mutua, variables de condición y almacenamientos específicos de hilo.

Contenidos

Hilos

thrd_t tipo de objeto completo definido por la implementación que identifica un hilo
crea un hilo
(función)
comprueba si dos identificadores se refieren al mismo hilo
(función)
obtiene el identificador del hilo actual
(función)
suspende la ejecución del hilo llamante durante el período de tiempo dado
(función)
cede el segmento de tiempo actual
(función)
termina el hilo llamante
(función)
separa un hilo
(función)
bloquea hasta que un hilo termina
(función)
indica un estado de error de hilo
(constante)
thrd_start_t
(C11)
un typedef del tipo de puntero a función int ( * ) ( void * ) , utilizado por thrd_create
(typedef)

Exclusión mutua

mtx_t identificador de mutex
crea un mutex
(función)
bloquea hasta adquirir un mutex
(función)
bloquea hasta adquirir un mutex o agotar el tiempo
(función)
adquiere un mutex o retorna sin bloquear si ya está bloqueado
(función)
libera un mutex
(función)
destruye un mutex
(función)
define el tipo de un mutex
(enumeración)
Ejecución única
llama a una función exactamente una vez
(función)

Variables de condición

cnd_t identificador de variable de condición
crea una variable de condición
(función)
desbloquea un hilo bloqueado en una variable de condición
(función)
desbloquea todos los hilos bloqueados en una variable de condición
(función)
bloquea en una variable de condición
(función)
bloquea en una variable de condición, con un tiempo de espera
(función)
destruye una variable de condición
(función)

Almacenamiento local de hilo

(C11) (eliminado en C23)
macro de conveniencia para el especificador de clase de almacenamiento _Thread_local
(macro de palabra clave)
tss_t puntero de almacenamiento específico del hilo
número máximo de veces que se llaman los destructores
(constante macro)
tss_dtor_t
(C11)
tipo de puntero a función void ( * ) ( void * ) , utilizado para el destructor TSS
(typedef)
crea un puntero de almacenamiento específico del hilo con un destructor dado
(función)
(C11)
lee del almacenamiento específico del hilo
(función)
(C11)
escribe en el almacenamiento específico del hilo
(función)
libera los recursos mantenidos por un puntero específico del hilo dado
(función)

Sinopsis

#define __STDC_NO_THREADS__ 202311L
#define ONCE_FLAG_INIT      /* ver descripción */
#define TSS_DTOR_ITERATIONS /* ver descripción */
typedef /* ver descripción */ cnd_t;
typedef /* ver descripción */ thrd_t;
typedef /* ver descripción */ tss_t;
typedef /* ver descripción */ mtx_t;
typedef /* ver descripción */ tss_dtor_t;
typedef /* ver descripción */ thrd_start_t;
#define mtx_plain     /* ver descripción */
#define mtx_recursive /* ver descripción */
#define mtx_timed     /* ver descripción */
#define once_flag     /* ver descripción */
#define thrd_busy     /* ver descripción */
#define thrd_error    /* ver descripción */
#define thrd_nomem    /* ver descripción */
#define thrd_success  /* ver descripción */
#define thrd_timedout /* ver descripción */
void call_once(once_flag* flag, void (*func)(void));
int cnd_broadcast(cnd_t* cond);
void cnd_destroy(cnd_t* cond);
int cnd_init(cnd_t* cond);
int cnd_signal(cnd_t* cond);
int cnd_timedwait(cnd_t* restrict cond, mtx_t* restrict mtx,
const struct timespec* restrict ts);
int cnd_wait(cnd_t* cond, mtx_t* mtx);
void mtx_destroy(mtx_t* mtx);
int mtx_init(mtx_t* mtx, int type);
int mtx_lock(mtx_t* mtx);
int mtx_timedlock(mtx_t* restrict mtx, const struct timespec* restrict ts);
int mtx_trylock(mtx_t* mtx);
int mtx_unlock(mtx_t* mtx);
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 thr0, thrd_t thr1);
[[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);
int tss_create(tss_t* key, tss_dtor_t dtor);
void tss_delete(tss_t key);
void* tss_get(tss_t key);
int tss_set(tss_t key, void* val);