Карта сайта Kansoftware
НОВОСТИУСЛУГИРЕШЕНИЯКОНТАКТЫ
Разработка программного обеспечения

Chapter 6. Boost.Atomic

Boost , The Boost C++ Libraries BoostBook Documentation Subset , Part I. The Boost C++ Libraries (BoostBook Subset)

Boost C++ Libraries

...one of the most highly regarded and expertly designed C++ library projects in the world. Herb Sutter and Andrei Alexandrescu, C++ Coding Standards

PrevUpHomeNext

Chapter 6. Boost.Atomic

Helge Bahmann

Andrey Semashev

Распространяется под лицензией Boost Software License, версия 1.0. (См. сопроводительный файл LICENSE_1_0.txt или копию по адресуhttp://www.boost.org/LICENSE_1_0.txt)

Boost.Atomicпредставляет собой библиотеку, которая предоставляет<atomic>типы данных и операции на этих типах данных, а также ограничения упорядочивания памяти, необходимые для координации нескольких потоков через атомные переменные. Он реализует интерфейс, определенный стандартом C++11, но делает эту функцию доступной для платформ, не имеющих поддержки системы / компилятора для этой конкретной функции C++11.

Пользователи этой библиотеки уже должны быть знакомы с параллелизмом в целом, а также элементарными понятиями, такими как «взаимное исключение».

Реализация использует инструкции для конкретных процессоров, где это возможно (через встроенный ассемблер, библиотеки платформ или внутренние компоненты компилятора), и возвращается к «эмуляции» атомных операций через блокировку.

Операции с «обычными» переменными не являются атомными. Это означает, что с<int n=0>изначально, две нити одновременно выполняются.

void function()
{
  n ++;
}

В результате<n==1>вместо 2: каждый поток будет считывать старое значение в регистр процессора, увеличивать его и записывать результат обратно. Поэтому обе нити могут писать<1>, не зная, что другая нить делает то же самое.

Объявляя<atomic<int> n=0>вместо этого, одна и та же операция на этой переменной всегда приводит к<n==2>, поскольку каждая операция на этой переменной являетсяатомной.: Это означает, что каждая операция ведет себя так, как если бы она была строго последовательной по отношению к другой.

Атомные переменные полезны для двух целей:

  • как средство для координации нескольких потоков с помощью пользовательских протоколов координации
  • Более быстрые альтернативы «закрытому» доступу к простым переменным

Взгляните напримерыраздела для общих шаблонов.

Последний пересмотр: 21 сентября 2016 года в 14:37:13 GMT


PrevUpHomeNext

Статья Chapter 6. Boost.Atomic раздела The Boost C++ Libraries BoostBook Documentation Subset Part I. The Boost C++ Libraries (BoostBook Subset) может быть полезна для разработчиков на c++ и boost.




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



:: Главная :: Part I. The Boost C++ Libraries (BoostBook Subset) ::


реклама


©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007
Top.Mail.Ru

Время компиляции файла: 2024-08-30 11:47:00
2025-05-19 17:24:43/0.0067479610443115/0