Пространства имён
Варианты
Действия

std::thread

Материал из cppreference.com
< cpp‎ | thread
 
 
Библиотека поддержки конкуренции
Ветви
thread
(C++11)
(C++20)
(C++20)
Пространство имён this_thread
(C++11)
(C++11)
(C++11)
Атомарные типы
(C++11)
(C++20)
Инициализация атомарных типов
(C++11)(устарело в C++20)
(C++11)(устарело в C++20)
(C++11)(устарело в C++20)
Функции освобождения для атомарных операций
Функции освобождения для атомарных флагов
Упорядочивание памяти
Взаимное исключение
Общее управление блокировкой
(C++11)
(C++11)
(C++11)(C++11)(C++11)
(C++11)
(C++11)
Условные переменные
(C++11)
Семафоры
Защёлки и барьеры
(C++20)
(C++20)
Фьючерсы
(C++11)
(C++11)
(C++11)
 
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 функция-элемент)[править]
возвращает количество параллельных потоков, поддерживаемых реализацией
(public static функция-элемент)[править]
Операции
ждёт, пока поток закончит свое выполнение
(public функция-элемент)[править]
позволяет потоку выполняться независимо от дескриптора потока
(public функция-элемент)[править]
обменивает два объекта thread
(public функция-элемент)[править]

[править]Функции, не являющиеся элементами

специализация алгоритма std::swap
(функция)[править]

[править]Смотрите также

(C++20)
std::thread с поддержкой автоматического присоединения и завершения
(класс)[править]
close