Параллельное программирование на С++ в действии. Практика разработки многопоточных программ - [189]
Объявление
>integral-type operator++(int) volatile noexcept;
>integral-type operator++(int) noexcept;
Результат
>return this->fetch_add(1);
>STD::ATOMIC, ОПЕРАТОР ПРЕДЕКРЕМЕНТА
Атомарно декрементирует значение, хранящееся в >*this, и возвращает новое значение.
Объявление
>integral-type operator--() volatile noexcept;
>integral-type operator--() noexcept;
Результат
>return this->fetch_sub(1) - 1;
>STD::ATOMIC, ОПЕРАТОР ПОСТДЕКРЕМЕНТА
Атомарно декрементирует значение, хранящееся в >*this, и возвращает старое значение.
Объявление
>integral-type operator--(int) volatile noexcept;
>integral-type operator--(int) noexcept;
Результат
>return this->fetch_sub(1);
>STD::ATOMIC, СОСТАВНОЙ ОПЕРАТОР ПРИСВАИВАНИЯ
Атомарно складывает значение аргумента со значением, хранящимся в >*this, и возвращает новое значение.
Объявление
>integral-type operator+=(integral-type i) volatile noexcept;
>integral-type operator+=(integral-type i) noexcept;
Результат
>return this->fetch_add(i) + i;
>STD::ATOMIC, СОСТАВНОЙ ОПЕРАТОР ПРИСВАИВАНИЯ
Атомарно вычитает значение аргумента из значения, хранящегося в >*this, и возвращает новое значение.
Объявление
>integral-type operator-=(integral-type i) volatile noexcept;
>integral-type operator-=(integral-type i) noexcept;
Результат
>return this->fetch_sub(i, std::memory_order_seq_cst) - i;
>STD::ATOMIC, СОСТАВНОЙ ОПЕРАТОР ПРИСВАИВАНИЯ
Атомарно заменяет значение, хранящееся в >*this, результатом операции поразрядное-и между этим значением и значением аргумента и возвращает новое значение.
Объявление
>integral-type operator&=(integral-type i) volatile noexcept;
>integral-type operator&=(integral-type i) noexcept;
Результат
>return this->fetch_and(i) & i;
>STD::ATOMIC, СОСТАВНОЙ ОПЕРАТОР ПРИСВАИВАНИЯ
Атомарно заменяет значение, хранящееся в >*this, результатом операции поразрядное-или между этим значением и значением аргумента и возвращает новое значение.
>Объявление
>integral-type operator|=(integral-type i) volatile noexcept;
>integral-type operator|=(integral-type i) noexcept;
Результат
>return this->fetch_or(i, std::memory_order_seq_cst) | i;
>STD::ATOMIC, СОСТАВНОЙ ОПЕРАТОР ПРИСВАИВАНИЯ
Атомарно заменяет значение, хранящееся в >*this, результатом операции поразрядное исключающее-или между этим значением и значением аргумента и возвращает новое значение.
Объявление
>integral-type operator^=(integral-type i) volatile noexcept;
>integral-type operator^=(integral-type i) noexcept;
Результат
>return this->fetch_xor(i, std::memory_order_seq_cst) ^ i;
>STD::ATOMIC, ЧАСТИЧНАЯ СПЕЦИАЛИЗАЦИЯ
Частичная специализация >std::atomic шаблона >std::atomic предоставляет атомарный тип для любого указательного типа, с полным набором операций.
Экземпляры >std::atomic не удовлетворяют требованиям концепций >CopyConstructible и >CopyAssignable, поскольку такие операции невозможно выполнить атомарно.
Определение класса
>template
>struct atomic
> atomic() noexcept = default;
> constexpr atomic(T*) noexcept;
> bool operator=(T*) volatile;
> bool operator=(T*);
> atomic(const atomic&) = delete;
> atomic& operator=(const atomic&) = delete;
> atomic& operator=(const atomic&) volatile = delete;
> bool is_lock_free() const volatile noexcept;
> bool is_lock_free() const noexcept;
> void store(T*, memory_order = memory_order_seq_cst)
> volatile noexcept;
> void store(T*, memory_order = memory_order_seq_cst) noexcept;
> T* load(memory_order = memory_order_seq_cst)
> const volatile noexcept;
> T* load(memory_order = memory_order_seq_cst) const noexcept;
> T* exchange(T*, memory_order = memory_order_seq_cst)
> volatile noexcept;
> T* exchange(T*, memory_order = memory_order_seq_cst) noexcept;
> bool compare_exchange_strong(
> T* & old_value, T* new_value,
> memory_order order = memory_order_seq_cst)
> volatile noexcept;
> bool compare_exchange_strong(
> T* & old_value, T* new_value,
> memory_order order = memory_order_seq_cst) noexcept;
> bool compare_exchange_strong(
> T* & old_value, T* new_value,
> memory_order success_order, memory_order failure_order)
> volatile noexcept;
> bool compare_exchange_strong(
> T* & old_value, T* new_value,
> memory_order success_order,
> memory_order failure_order) noexcept;
> bool compare_exchange_weak(
> T* & old_value, T* new_value,
> memory_order order = memory_order_seq_cst) volatile noexcept;
> bool compare_exchange_weak(
> T* & old_value, T* new_value,
> memory_order order = memory_order_seq_cst) noexcept;
> bool compare_exchange_weak(
> T* & old_value, T* new_value,
> memory_order success_order, memory_order failure_order)
> volatile noexcept;
> bool compare_exchange_weak(
> T* & old_value, T* new_value,
> memory_order success_order,
> memory_order failure_order) noexcept;
> operator T*() const volatile noexcept;
> operator T*() const noexcept;
> T* fetch_add(
> ptrdiff_t, memory_order = memory_order_seq_cst)
> volatile noexcept;
> T* fetch_add(
> ptrdiff_t, memory_order = memory_order_seq_cst) noexcept;
> T* fetch_sub(
> ptrdiff_t, memory_order = memory_order_seq_cst)
Это знаменитый бестселлер, который научит вас использовать власть массового сотрудничества и покажет, как применять викиномику в вашем бизнесе. Переведенная более чем на двадцать языков и неоднократно номинированная на звание лучшей бизнес-книги, "Викиномика" стала обязательным чтением для деловых людей во всем мире. Она разъясняет, как массовое сотрудничество происходит не только на сайтах Wikipedia и YouTube, но и в традиционных компаниях, использующих технологии для того, чтобы вдохнуть новую жизнь в свои предприятия.Дон Тапскотт и Энтони Уильямс раскрывают принципы викиномики и рассказывают потрясающие истории о том, как массы людей (как за деньги, так и добровольно) создают новости, изучают геном человека, создают ремиксы любимой музыки, находят лекарства от болезней, редактируют школьные учебники, изобретают новую косметику, пишут программное обеспечение и даже строят мотоциклы.Знания, ресурсы и вычислительные способности миллиардов людей самоорганизуются и превращаются в новую значительную коллективную силу, действующую согласованно и управляемую с помощью блогов, вики, чатов, сетей равноправных партнеров и личные трансляции.
В этом полном руководстве по C# 4.0 - языку программирования, разработанному специально для среды .NET, - детально рассмотрены все основные средства языка: типы данных, операторы, управляющие операторы, классы, интерфейсы, методы, делегаты, индексаторы, события, указатели, обобщения, коллекции, основные библиотеки классов, средства многопоточного программирования и директивы препроцессора. Подробно описаны новые возможности C#, в том числе PLINQ, библиотека TPL, динамический тип данных, а также именованные и необязательные аргументы.
Вниманию читателей предлагается справочник по PHP.Справочник предназначается для людей, уже освоивших азы программирования на языке PHP.Справочник создан на основе информации, предоставленной на сайте «Справочник Web-языков» www.spravkaweb.ru.
Эта книга поможет новичку стать профессионалом, так как в ней представлен сконцентрированный лучший опыт программистов на С++, обобщенный двумя экспертами мирового класса.Начинающий программист найдет в ней простые и понятные рекомендации для ежедневного использования, подкрепленные примерами их конкретного применения на практике.Опытные программисты найдут в ней советы и новые рекомендации, которые можно сразу же принять на вооружение. Программисты-профессионалы могут использовать эту книгу как основу для разработки собственных стандартов кодирования, как для себя лично, так и для группы, которой они руководят.Конечно, книга рассчитана в первую очередь на профессиональных программистов с глубокими знаниями языка, однако она будет полезна любому, кто захочет углубить свои знания в данной области.
Цель книги – познакомить читателей с существующими подходами и решениями в области моделирования бизнес-архитектуры предприятия. В книге освещаются различные аспекты данной проблематики, в том числе такие вопросы как базовые подходы к моделированию и возможности современных инструментальных средств.Особое внимание уделяется специфике организации проектов по разработке моделей бизнес-архитекуры. На основе практического опыта реализации проектов по моделированию бизнес-процессов в различных предметных областях проанализированы и обобщены типичные риски, ошибки и заблуждения основных участников, даны рекомендации по их предупреждению.
В книге широко представлены возможности новейшей версии программного продукта Microsoft Visual C++. Подробно описаны средства и подходы программирования современных профессиональных приложений. Материалы книги дополнены многочисленными демонстрационными программами, в процессе разработки которых максимально используются возможности программных инструментов Microsoft Visual Studio. Особое внимание уделено новинкам версии 6.0 и новейшим технологиям объектно-ориентированного программирования, включая использование библиотеки MFC и шаблонов классов, а также создание связанных списков.
В книге рассказывается история главного героя, который сталкивается с различными проблемами и препятствиями на протяжении всего своего путешествия. По пути он встречает множество второстепенных персонажей, которые играют важные роли в истории. Благодаря опыту главного героя книга исследует такие темы, как любовь, потеря, надежда и стойкость. По мере того, как главный герой преодолевает свои трудности, он усваивает ценные уроки жизни и растет как личность.