Параллельное программирование на С++ в действии. Практика разработки многопоточных программ - [212]

Шрифт
Интервал

Результат

Если до вызова этого оператора >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.

Постусловия

>this->get_id() == id(). Поток выполнения, который был ассоциирован с >*this до вызова этой функции, завершился.

Синхронизация

Завершение потока выполнения, который был ассоциирован с >*this до вызова этой функции, происходит-раньше возврата из >jоin().

Исключения

>std::system_error, если требуемого эффекта добиться не удалось или если >this->joinable() возвращает >false.

>STD::THREAD::DETACH, ФУНКЦИЯ-ЧЛЕН

Отсоединяет поток выполнения, ассоциированный с >*this.

Объявление

>void detach();

Предусловия

>this->joinable() возвращает >true.

Результат

Отсоединяет поток выполнения, ассоциированный с >*this.

Постусловия

>this->get_id() == id(), >this->joinable() == false. Поток выполнения, который был ассоциирован с >*this до вызова этой функции, отсоединен и более не ассоциирован ни с каким объектом >std::thread.

Исключения

>std::system_error, если требуемого эффекта добиться не удалось или если >this->joinable() возвращает >false в момент вызова.

>STD::THREAD::GET_ID, ФУНКЦИЯ-ЧЛЕН

Возвращает значение типа s>td::thread::id, идентифицирующее поток выполнения, ассоциированный с >*this.

Объявление

>thread::id get_id() const noexcept;

Возвращаемое значение

Если с >*this ассоциирован поток выполнения, то возвращает экземпляр >std::thread::id, который идентифицирует этот поток. В противном случае возвращает сконструированный по умолчанию экземпляр >std::thread::id.

Исключения

Нет.

>STD::THREAD::HARDWARE_CONCURRENCY, СТАТИЧЕСКАЯ ФУНКЦИЯ-ЧЛЕН

Возвращает информацию о том, сколько потоков могут одновременно работать на имеющемся оборудовании.

Объявление

>unsigned hardware_concurrency() noexcept;

Возвращаемое значение

Количество потоков, которые могут одновременно исполняться на имеющемся оборудовании. Например, это может быть число процессоров. Если информация недоступна или определена неточно, возвращает 0.

Исключения

Нет.

D.7.2. Пространство имен >this_thread

Функции из пространства имен >std::this_thread применяются к вызывающему потоку.

>STD::THIS_THREAD::GET_ID, ФУНКЦИЯ, НЕ ЯВЛЯЮЩАЯСЯ ЧЛЕНОМ КЛАССА

Возвращает значение типа >std::thread::id, идентифицирующее текущий поток выполнения.

Объявление

>thread::id get_id() noexcept;

Возвращаемое значение

Экземпляр >std::thread::id, идентифицирующий текущий поток выполнения.

Исключения

Нет.

>STD::THIS_THREAD::YIELD, ФУНКЦИЯ, HE ЯВЛЯЮЩАЯСЯ ЧЛЕНОМ КЛАССА

Информирует библиотеку о том, что поток, вызвавший эту функцию, в данный момент не хочет выполняться. Обычно используется в коротких циклах, чтобы не потреблять излишне много процессорного времени.

Объявление

>void yield() noexcept;

Результат

Предоставляет библиотеке возможность запланировать другой поток вместо текущего.

Исключения

Нет.

>STD::THIS_THREAD::SLEEP_FOR, ФУНКЦИЯ, НЕ ЯВЛЯЮЩАЯСЯ ЧЛЕНОМ КЛАССА

Приостанавливает выполнение текущего потока на указанное время.

Объявление

>template

>void sleep_for(

> std::chrono::duration const& relative_time);

Результат

Приостанавливает выполнение текущего потока на указанное время >relative_time.

Примечание. Поток может быть блокирован дольше, чем указано. Если возможно, истекшее время измеряется по стабильным часам.


Еще от автора Энтони Д Уильямс
Викиномика. Как массовое сотрудничество изменяет всё

Это знаменитый бестселлер, который научит вас использовать власть массового сотрудничества и покажет, как применять викиномику в вашем бизнесе. Переведенная более чем на двадцать языков и неоднократно номинированная на звание лучшей бизнес-книги, "Викиномика" стала обязательным чтением для деловых людей во всем мире. Она разъясняет, как массовое сотрудничество происходит не только на сайтах Wikipedia и YouTube, но и в традиционных компаниях, использующих технологии для того, чтобы вдохнуть новую жизнь в свои предприятия.Дон Тапскотт и Энтони Уильямс раскрывают принципы викиномики и рассказывают потрясающие истории о том, как массы людей (как за деньги, так и добровольно) создают новости, изучают геном человека, создают ремиксы любимой музыки, находят лекарства от болезней, редактируют школьные учебники, изобретают новую косметику, пишут программное обеспечение и даже строят мотоциклы.Знания, ресурсы и вычислительные способности миллиардов людей самоорганизуются и превращаются в новую значительную коллективную силу, действующую согласованно и управляемую с помощью блогов, вики, чатов, сетей равноправных партнеров и личные трансляции.


Рекомендуем почитать
Язык PL/SQL

В учебно-методическом пособии рассматриваются основы языка программирования PL/SQL, реализованного в системе управления базами данных Oracle Database Server. Приводятся сведения о поддерживаемых типах данных, структуре программ PL/SQL и выполнении SQL-предложений в них. Отдельно рассмотрено создание хранимых в базах данных Oracle программ PL/SQL – процедур, функций, пакетов и триггеров.


Пишем драйвер Windows на ассемблере

В книге рассказывается история главного героя, который сталкивается с различными проблемами и препятствиями на протяжении всего своего путешествия. По пути он встречает множество второстепенных персонажей, которые играют важные роли в истории. Благодаря опыту главного героя книга исследует такие темы, как любовь, потеря, надежда и стойкость. По мере того, как главный герой преодолевает свои трудности, он усваивает ценные уроки жизни и растет как личность.


Язык программирования С# 2005 и платформа .NET 2.0.

В этой книге содержится описание базовых принципов функционирования платформы .NET, системы типов .NET и различных инструментальных средств разработки, используемых при создании приложений .NET. Представлены базовые возможности языка программирования C# 2005, включая новые синтаксические конструкции, появившиеся с выходом .NET 2.0, а также синтаксис и семантика языка CIL. В книге рассматривается формат сборок .NET, библиотеки базовых классов .NET. файловый ввод-вывод, возможности удаленного доступа, конструкция приложений Windows Forms, доступ к базам данных с помощью ADO.NET, создание Web-приложений ASP.NET и Web-служб XML.


Вариации на тему STL. Адаптер обобщенного указателя на функцию-член класса

В книге рассказывается история главного героя, который сталкивается с различными проблемами и препятствиями на протяжении всего своего путешествия. По пути он встречает множество второстепенных персонажей, которые играют важные роли в истории. Благодаря опыту главного героя книга исследует такие темы, как любовь, потеря, надежда и стойкость. По мере того, как главный герой преодолевает свои трудности, он усваивает ценные уроки жизни и растет как личность.


Информационная технология. Руководство по управлению документированием программного обеспечения

ГОСУДАРСТВЕННЫЙ СТАНДАРТ РОССИЙСКОЙ ФЕДЕРАЦИИИнформационная технологияРУКОВОДСТВО ПО УПРАВЛЕНИЮ ДОКУМЕНТИРОВАНИЕМ ПРОГРАММНОГО ОБЕСПЕЧЕНИЯInformation technology. Guidelines for the management of software documentationИздание официальноеДата введения 1994-07-01ГОССТАНДАРТ РОССИИ Москва© Издательство стандартов, 1994.


Самоучитель UML

Самоучитель UMLПервое издание.В книге рассматриваются основы UML – унифицированного языка моделирования для описания, визуализации и документирования объектно-ориентированных систем и бизнес-процессов в ходе разработки программных приложений. Подробно описываются базовые понятия UML, необходимые для построения объектно-ориентированной модели системы с использованием графической нотации. Изложение сопровождается примерами разработки отдельных диаграмм, которые необходимы для представления информационной модели системы.