Имя |
Примечания
|
int thrd_create(thrd_t *thr, thrd_start_t func, void *arg) |
создает новый поток, исполняющий func с аргументами arg, помещая его идентификатор в thr
|
int thrd_equal(thrd_t lhs, thrd_t rhs) |
проверяет, указывает ли lhs на тот же поток, что и rhs
|
thrd_t thrd_current(void) |
возвращает идентификатор текущего потока
|
int thrd_sleep(const struct timespec* duration, struct timespec* remaining) |
останавливает текущий поток на длительность duration, помещая оставшее до возобновления работы время в remaining,
|
void thrd_yield(void) |
предоставляет планировщику задач подсказку перепланировать выполнение потоков, позволяя другим потокам работать
|
_Noreturn void thrd_exit(int res) |
завершает выполнение текущего потока, устанавливая его код возврата равным res
|
int thrd_detach(thrd_t thr) |
отсоединяет поток, идентефицируемый thr, от текущей среды.
|
int thrd_join(thrd_t thr, int *res) |
ожидает завершение работы потока, идентифицируемого thr, помещая его код исполнения в res
|
int mtx_init(mtx_t* mutex, int type) |
создает мьютекс типа type, помещая его идентификатор в переменную, на которую указывает mutex
|
int mtx_lock(mtx_t* mutex) |
останавливает работу текущего потока, пока мьютекс, на который указывает mutex, не будет разблокирован
|
int mtx_timedlock(mtx_t *restrict mutex, const struct timespec *restrict time_point) |
останавливает работу текущего потока, пока мьютекс, на который указывает mutex, не будет разблокирован, или пока не будет достигнут момент времени, на который указывает time_point
|
int mtx_trylock(mtx_t *mutex) |
блокирует мьютекс, если он уже не заблокирован
|
int mtx_unlock(mtx_t *mutex) |
разблокирует мьютекс, на который указывает mutex
|
int mtx_destroy(mtx_t *mutex) |
уничтожает мьютекс, на который указывает mutex
|
void call_once(once_flag* flag, void (*func)(void) func) |
вызывает функцию func ровно один раз, даже если вызывается из нескольких потоков
|
int cnd_init(cnd_t* cond) |
создает условную переменную, помещая ее идентификатор в cond
|
int cnd_signal(cnd_t *cond) |
разблокирует один поток, ожидающий условную переменную, на которую указывает cond
|
int cnd_wait(cnd_t* cond, mtx_t* mutex) |
разблокирует мьютекс, на который указывает mutex, и блокирует переменную условия, на которую указывает cond, до тех пор, пока поток не сообщит cnd_signal или cnd_broadcast, или пока не произойдет ложное пробуждение
|
int cnd_timedwait( cnd_t* restrict cond, mtx_t* restrict mutex, const struct timespec* restrict time_point ) |
разблокирует мьютекс, на который указывает mutex, и блокирует переменную условия, на которую указывает cond, до тех пор, пока поток не сообщит cnd_signal или cnd_broadcast, или пока не будет достигнут момент времени, на который указывает time_point, или пока не произойдет ложное пробуждение
|
void cnd_destroy(cnd_t* cond); |
уничтожает условную переменную, на которую указывает cond
|
int tss_create(tss_t* tss_key, tss_dtor_t destructor) |
создает локальное хранилище потока с заданным деструктором destructor, помещая его идентификатор в переменную, на которую указывает tss_key
|
void *tss_get(tss_t tss_key) |
возвращает данные, содержащиеся в локальном хранилище потока, идентифицируемом tts_key
|
int tss_set(tss_t tss_id, void *val) |
устанавливает значение, хранящееся в локальном хранилище потока, идентифицируемом tts_key, равным val
|
void tss_delete(tss_t tss_id) |
уничтожает локальное хранилище потока, идентифицируемое tts_id
|