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 с поддержкой автоматического присоединения и завершения (класс) |