std::thread
Определено в заголовочном файле <thread> | ||
class thread; | (начиная с C++11) | |
Класс thread
представляет один поток выполнения. Потоки позволяют одновременно выполнять несколько функций.
Потоки начинают выполнение немедленно после создания связанного объекта потока (ожидая любые задержки планирования ОС), начиная с функции верхнего уровня, предоставленной в виде аргумента конструктора. Возвращаемое значение функции верхнего уровня игнорируется, и если она завершается, выбрасывая исключение, вызывается std::terminate. Функция верхнего уровня может передавать своё возвращаемое значение или исключение вызывающей стороне через std::promise или путём изменения общих переменных (которые могут потребовать синхронизации, смотрите std::mutex и std::atomic).
Объекты std::thread
также могут быть в состоянии, которое не представляет поток (после создания по умолчанию, перемещение из, detach или join), а также поток выполнения не может быть связан с любыми объектами thread
(после detach).
Нет двух объектов std::thread
, которые могут представлять один и тот же поток выполнения; std::thread
не CopyConstructible или CopyAssignable, хотя он MoveConstructible и MoveAssignable.
Содержание |
[править]Типы-элементы
Тип элемент | Определение |
native_handle_type (не всегда присутствует) | определяется реализацией |
[править]Классы-элементы
предоставляет идентификатор потока (public элемент класса) |
[править]Функции-элементы
создаёт новый объект thread (public функция-элемент) | |
разрушает объект потока, основной поток должен быть присоединён или отсоединён (public функция-элемент) | |
перемещает объект потока (public функция-элемент) | |
Наблюдатели | |
проверяет, является ли поток присоединяемым, т.е. потенциально работающим в параллельном контексте (public функция-элемент) | |
возвращает идентификатор потока (public функция-элемент) | |
возвращает базовый дескриптор потока, определяемый реализацией (public функция-элемент) | |
[static] | возвращает количество параллельных потоков, поддерживаемых реализацией (public static функция-элемент) |
Операции | |
ждёт, пока поток закончит свое выполнение (public функция-элемент) | |
позволяет потоку выполняться независимо от дескриптора потока (public функция-элемент) | |
обменивает два объекта thread (public функция-элемент) |
[править]Функции, не являющиеся элементами
(C++11) | специализация алгоритма std::swap (функция) |
[править]Смотрите также
(C++20) | std::thread с поддержкой автоматического присоединения и завершения (класс) |