Вызов этого конструктора происходит-раньше выполнения переданной функции во вновь созданном потоке выполнения.
STD::THREAD
, ПЕРЕМЕЩАЮЩИЙ КОНСТРУКТОР
Передает владение потоком выполнения от существующего объекта std::thread
вновь созданному.
thread(thread&& other) noexcept;
Конструирует экземпляр std::thread
. Если с объектом other
перед вызовом конструктора был ассоциирован поток выполнения, то теперь этот поток оказывается ассоциирован с вновь созданным объектом std::thread
. В противном случае с вновь созданным объектом std::thread не ассоциирован никакой поток.
Для вновь сконструированного объекта x
типа std::thread x.get_id()
равно значению other.get_id()
до вызова конструктора, other.get_id() == id()
.
Нет.
Примечание. Объекты std::thread
не удовлетворяют требованиям концепции CopyConstructible
, поэтому копирующего конструктора не существует, существует только этот перемещающий конструктор.
STD::THREAD
, ДЕСТРУКТОР
Уничтожает объект std::thread
.
~thread();
Уничтожает *this
. Если с *this
ассоциирован поток выполнения (this->joinable()
возвращает true
), то вызывает std::terminate()
, то есть аварийно завершает программу.
Нет.
STD::THREAD
, ПЕРЕМЕЩАЮЩИЙ ОПЕРАТОР ПРИСВАИВАНИЯ
Передает владение потоком выполнения от одного объекта std::thread
другому.
thread& operator=(thread&& other) noexcept;
Если до вызова этого оператора this->joinable()
возвращала true
, то вызывает std::terminate()
для аварийного завершения программы. Если с other
до вызова оператора был ассоциирован поток выполнения, то после вызова он оказывается ассоциирован с *this
. В противном случае с *this
не ассоциирован никакой поток выполнения.
this->get_id()
равно значению other.get_id()
до вызова конструктора. other.get_id() == id()
.
Нет.
Примечание. Объекты std::thread
не удовлетворяют требованиям концепции CopyAssignable
, поэтому копирующего оператора присваивания не существует, существует только этот перемещающий оператор присваивания.
STD::THREAD::SWAP
, ФУНКЦИЯ-ЧЛЕН
Обменивает владение ассоциированными потоками выполнения между двумя объектами std::thread
.
void swap(thread& other) noexcept;
Если с other
до вызова функции был ассоциирован поток выполнения, то после вызова он оказывается ассоциирован с *this
. В противном случае с *this
не ассоциирован никакой поток выполнения. Если с *this
до вызова функции был ассоциирован поток выполнения, то после вызова он оказывается ассоциирован с other
. В противном случае с other
не ассоциирован никакой поток выполнения.
this->get_id()
равно значению other.get_id()
до вызова функции. other.get_id()
равно значению this->get_id()
до вызова функции.
Нет.
STD::THREAD::SWAP
, ФУНКЦИЯ, НЕ ЯВЛЯЮЩАЯСЯ ЧЛЕНОМ КЛАССА
Обменивает владение ассоциированными потоками выполнения между двумя объектами std::thread
.
void swap(thread& lhs, thread& rhs) noexcept;
lhs.swap(rhs)
Нет.
STD::THREAD::JOINABLE
, ФУНКЦИЯ-ЧЛЕН
Опрашивает, ассоциирован ли с *this
поток выполнения.
bool joinable() const noexcept;
true
, если с *this
ассоциирован поток выполнения, иначе false
.
Нет.
STD::THREAD::JOIN
, ФУНКЦИЯ-ЧЛЕН
Ожидает завершения потока выполнения, ассоциированного с *this
.
void jоin();
this->joinable()
должна возвращать true
.
Блокирует текущий поток, пока не завершится поток, ассоциированный с *this
.