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

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

>return this->store(b);

>STD::ATOMIC::IS_LOCK_FREE, ФУНКЦИЯ-ЧЛЕН

Сообщает, являются ли операции над >*this свободными от блокировок.

Объявление

>bool is_lock_free() const volatile noexcept;

>bool is_lock_free() const noexcept;

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

>true, если операции над >*this свободны от блокировок, иначе >false.

Исключения

Нет.

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

Сообщает, являются ли операции над >*this свободными от блокировок.

Объявление

>template

>bool atomic_is_lock_free(

> volatile const atomic* p) noexcept;

>template

>bool atomic_is_lock_free(const atomic* p) noexcept;

Результат

>return p->is_lock_free();

>STD::ATOMIC::LOAD, ФУНКЦИЯ-ЧЛЕН

Атомарно загружает текущее значение объекта >std::atomic.

Объявление

>BaseType load(memory_order order = memory_order_seq_cst)

> const volatile noexcept;

>BaseType load(

> memory_order order = memory_order_seq_cst) const noexcept;

Предусловия

Параметр >order должен принимать одно из значений >std::memory_order_relaxed, >std::memory_order_acquire, >std: :memory_order_consume или >std::memory_order_seq_cst.

Результат

Атомарно загружает текущее, хранящееся в >*this.

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

Значение, хранящееся в >*this, в точке вызова.

Исключения

Нет.

Примечание. Это атомарная операция загрузки для ячейки памяти, содержащей >*this.

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

Атомарно загружает текущее значение объекта >std::atomic.

Объявление

>template

>BaseType atomic_load(volatile const atomic* p) noexcept;

>template

>BaseType atomic_load(const atomic* p) noexcept;

Результат

>return p->load();

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

Атомарно загружает текущее значение объекта >std::atomic.

Объявление

>template

>BaseType atomic_load_explicit(

> volatile const atomic* p,

> memory_order order) noexcept;

>template

>BaseType atomic_load_explicit(

> const atomic* p, memory_order order) noexcept;

Результат

>return p->load(order);

>STD::ATOMIC::OPERATOR, ОПЕРАТОР ПРЕОБРАЗОВАНИЯ В ТИП BASETYPE

Загружает значение, хранящееся в >*this.

Объявление

>operator BaseType() const volatile noexcept;

>operator BaseType() const noexcept;

Результат

>return this->load();

>STD::ATOMIC::STORE, ФУНКЦИЯ-ЧЛЕН

Атомарно сохраняет новое значение в объекте >atomic.

Объявление

>void store(

> BaseType new_value, memory_order order = memory_order_seq_cst)

> volatile noexcept;

>void store(

> BaseType new_value, memory_order order = memory_order_seq_cst)

> noexcept;

Предусловия

Параметр >order должен принимать одно из значений >std::memory_order_relaxed, >std::memory_order_release или >std::memory_order_seq_cst.

Результат

Атомарно сохраняет значение >new_value в >*this.

Исключения

Нет.

Примечание. Это атомарная операция сохранения для ячейки памяти, содержащей >*this.

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

Атомарно сохраняет новое значение в объекте >atomic.

Объявление

>template

>void atomic_store(

> volatile atomic* p, BaseType new_value) noexcept;

>template

>void atomic_store(

> atomic* p, BaseType new_value) noexcept;

Результат

>p->store(new_value);

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

Атомарно сохраняет новое значение в объекте >atomic.

Объявление

>template

>void atomic_store_explicit(

> volatile atomic* p, BaseType new_value,

> memory_order order) noexcept;

>template

>void atomic_store_explicit(

> atomic* p, BaseType new_value,

> memory_order order) noexcept;

Результат

>p->store(new_value, order);

>STD::ATOMIC::EXCHANGE, ФУНКЦИЯ-ЧЛЕН

Атомарно сохраняет новое значение и читает старое.

Объявление

>BaseType exchange(

>BaseType new_value,

> memory_order order = memory_order_seq_cst) volatile noexcept;

Результат

Атомарно сохраняет значение >new_value в >*this и извлекает прежнее значение >*this.

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

Значение >*this непосредственно перед сохранением.

Исключения

Нет.

Примечание. Это атомарная операция чтения-модификации-записи для ячейки памяти, содержащей >*this.

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

Атомарно сохраняет новое значение в объекте >atomic и читает предыдущее значение.

Объявление

>template

>BaseType atomic_exchange(

> volatile atomic* p, BaseType new_value) noexcept;

>template

>BaseType atomic_exchange(

> atomic* p, BaseType new_value) noexcept;

Результат

>return p->exchange(new_value);

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

Атомарно сохраняет новое значение в объекте >atomic и читает предыдущее значение.

Объявление

>template

>BaseType atomic_exchange_explicit(

> volatile atomic* p,

> BaseType new_value, memory_order order)

> noexcept;

>template

>BaseType atomic_exchange_explicit(

> atomic* p,

> BaseType new_value, memory_order order) noexcept;

Результат

>return p->exchange(new_value, order);

>STD::ATOMIC::COMPARE_EXCHANGE_STRONG


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

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


Рекомендуем почитать
Пользовательские истории. Искусство гибкой разработки ПО

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


Программное обеспечение и его разработка

Автор книги — американский специалист по программированию, один из руководителей фирмы IBM, в своей книге делает попытку изложить общие проблемы создания программного обеспечения, его сопровождения и использования. Особенно подробно рассматриваются все фазы разработки программ разных типов. Изложение ясное, удачно иллюстрировано примерами.Для программистов разной квалификации и пользователей ЭВМ.fb2: ВНИМАНИЕ. В тексте присутствуют таблицы. Рекомендуется читать файл с помощью программы, поддерживающей их отображение.


Java 7

Рассмотрено все необходимое для разработки, компиляции, отладки и запуска приложений Java. Изложены практические приемы использования как традиционных, так и новейших конструкций объектно-ориентированного языка Java, графической библиотеки классов Swing, расширенной библиотеки Java 2D, работа со звуком, печать, способы русификации программ. Приведено полное описание нововведений Java SE 7: двоичная запись чисел, строковые варианты разветвлений, "ромбовидный оператор", NIO2, новые средства многопоточности и др.


JavaScript для детей. Самоучитель по программированию

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


C# 4.0: полное руководство

В этом полном руководстве по C# 4.0 - языку программирования, разработанному специально для среды .NET, - детально рассмотрены все основные средства языка: типы данных, операторы, управляющие операторы, классы, интерфейсы, методы, делегаты, индексаторы, события, указатели, обобщения, коллекции, основные библиотеки классов, средства многопоточного программирования и директивы препроцессора. Подробно описаны новые возможности C#, в том числе PLINQ, библиотека TPL, динамический тип данных, а также именованные и необязательные аргументы.


Симуляция частичной специализации

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