Вызов этого конструктора происходит-раньше выполнения переданной функции во вновь созданном потоке выполнения.
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