Читать «Параллельное программирование на С++ в действии. Практика разработки многопоточных программ» онлайн - страница 442
Энтони Уильямс
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
не ассоциирован никакой поток выполнения.