Arquivo threads.h

Propósito

O arquivo de cabeçalho threads.h inclui o arquivo de cabeçalho time.h e define macros. Ele também declara tipos, constantes de enumeração e funções que suportam vários encadeamentos de execução

Descrição

O arquivo de cabeçalho threads.h do cabeçalho não deve ser fornecido por implementações que definem a macro _ _STDC_NO_THREADS_ . Além disso, essas implementações não devem suportar quaisquer recursos especificados pelo arquivo threads.h do cabeçalho.

O arquivo de cabeçalho threads.h declara as seguintes macros:
thread_local
Expande para _Thread_local.
ONCE_FLAG_INIT
Expande-se para um valor que pode ser usado para inicializar um objeto do tipo once_flag.
TSS_DTOR_ITERATIONS
Expande-se para uma expressão constante de número inteiro que representa o número máximo de vezes que um destruidor é chamado quando um fio termina.
O arquivo de cabeçalho threads.h declara os seguintes tipos:
cnd_t
Um tipo de objeto completo que mantém um identificador para uma variável de condição.
thrd_t
Um tipo de objeto completo que comporta um identificador para um encadeamento.
tss_t
Um tipo de objeto completo que comporta um identificador para um ponteiro de armazenamento específico de encadeamento.
mtx_t
Um tipo de objeto completo que mantém um identificador para um mutex.
tss_dtor_t
Um ponteiro de função tipo void (*) (void *), usado para um destruidor para um ponteiro de armazenamento específico de encadeamento.
thrd_start_t
Um ponteiro de função tipo int (*) (void *) que é passado para thrd_create para criar um novo encadeamento.
once_flag
Um tipo de objeto completo que comporta uma bandeira para uso por call_once.
O arquivo de cabeçalho threads.h declara as seguintes constantes de enumeração:
mtx_plain
O tipo mtx_plain é passado para mtx_init para criar um objeto mutex que não suporta tempo limite e teste e retorna.
mtx_recursivo
O tipo mtx_recursive é passado para mtx_init para criar um objeto mutex que suporta bloqueio recursivo.
mtx_timed
O tipo mtx_timed é passado para mtx_init para criar um objeto mutex que suporta tempo limite.
thrd_timedout
O tipo cnd_t é retornado por uma função de espera cronometida para indicar que o tempo especificado na chamada foi alcançado sem adquirir o recurso solicitado.
thrd_success
O tipo thrd_success é retornado pela função para indicar que a operação solicitada teve sucesso.
thrd_ocupado
O tipo thrd_busy é retornado pela função para indicar que a operação solicitada falhou porque um recurso solicitado por uma função de teste e de retorno já está em uso.
thrd_error
O tipo thrd_error é retornado por uma função para indicar que a operação solicitada falhou.
thrd_nomem
O tipo thrd_nomem é retornado por uma função para indicar que a operação solicitada falhou porque foi incapaz de alocar memória.
O arquivo de cabeçalho threads.h declara as seguintes funções:
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);