Лучшие вопросы
Таймлайн
Чат
Перспективы
Threads.h
Из Википедии, свободной энциклопедии
Remove ads
threads.h — заголовочный файл стандартной библиотеки языка программирования С, содержащий макросы, типы, константы и функции для работы с потоками. Данный заголовочный файл появился в стандарте C11.[1]
Макросы
Подробнее Имя, Примечания ...
Имя | Примечания |
---|---|
thread_local | макрос, используемый для объявления локальной переменной потока |
TSS_DTOR_ITERATIONS | макрос, расширяемый до положительного целочисленного константного выражения, определяющего максимальное количество раз, которое деструктор для локального указателя памяти потока будет вызываться thrd_exit. |
Закрыть
Константы и типы
Подробнее Имя, Примечания ...
Имя | Примечания |
---|---|
thrd_success | указывает на успешное выполнение |
thrd_timedout | указывает на неудачное выполнение, завершившееся ввиду превышения времени ожидания |
thrd_busy | указывает на неудачное выполнение, завершившееся ввиду невозможности получить доступ к ресурсу |
thrd_nomem | указывает на неудачное выполнение, завершившееся ввиду нехватки памяти |
thrd_error | указывает на неудачное выполнение, завершившееся ввиду какой-либо ошибки |
thrd_t | зависящий от реализации тип, представляющий идентификатор потока |
thrd_start_t | синоним типа int(*)(void*) , используемый функцией thrd_create |
mtx_plain | значение, идентифицирующее тип мьютекса, у которого нет контроля повторного захвата множество раз одним и тем же потоком |
mtx_recursive | значение, идентифицирующее тип мьютекса, повторные захваты которого одним и тем же потоком множество раз допустимы, ведущего счётчик таких захватов |
mtx_timed | значение, идентифицирующее тип мьютекса, поддерживающего захват с возвращением ошибки по истечении указанного времени |
mtx_t | тип, представляющий индентификатор мьютекса |
cnd_t | тип, представляющий индентификатор условной переменной |
tss_t | тип, представляющий указатель на локальную память потока |
tss_dtor_t | синоним типа void(*)(void*) , используемого в качестве деструктора локальной памяти потока |
Закрыть
Remove ads
Функции
Подробнее Имя, Примечания ...
Имя | Примечания |
---|---|
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 |
Закрыть
Remove ads
Ссылки
Примечания
Wikiwand - on
Seamless Wikipedia browsing. On steroids.
Remove ads