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

Тут можно читать онлайн Энтони Уильямс - Параллельное программирование на С++ в действии. Практика разработки многопоточных программ - бесплатно полную версию книги (целиком) без сокращений. Жанр: comp-programming, издательство ДМК Пресс, год 2012. Здесь Вы можете читать полную версию (весь текст) онлайн без регистрации и SMS на сайте лучшей интернет библиотеки ЛибКинг или прочесть краткое содержание (суть), предисловие и аннотацию. Так же сможете купить и скачать торрент в электронном формате fb2, найти и слушать аудиокнигу на русском языке или узнать сколько частей в серии и всего страниц в публикации. Читателям доступно смотреть обложку, картинки, описание и отзывы (комментарии) о произведении.
  • Название:
    Параллельное программирование на С++ в действии. Практика разработки многопоточных программ
  • Автор:
  • Жанр:
  • Издательство:
    ДМК Пресс
  • Год:
    2012
  • Город:
    Москва
  • ISBN:
    978-5-94074-448-1
  • Рейтинг:
    5/5. Голосов: 11
  • Избранное:
    Добавить в избранное
  • Отзывы:
  • Ваша оценка:
    • 100
    • 1
    • 2
    • 3
    • 4
    • 5

Энтони Уильямс - Параллельное программирование на С++ в действии. Практика разработки многопоточных программ краткое содержание

Параллельное программирование на С++ в действии. Практика разработки многопоточных программ - описание и краткое содержание, автор Энтони Уильямс, читайте бесплатно онлайн на сайте электронной библиотеки LibKing.Ru
В наши дни компьютеры с несколькими многоядерными процессорами стали нормой. Стандарт С++11 языка С++ предоставляет развитую поддержку многопоточности в приложениях. Поэтому, чтобы сохранять конкурентоспособность, вы должны овладеть принципами и приемами их разработки, а также новыми средствами языка, относящимися к параллелизму.
Книга «Параллельное программирование на С++ в действии» не предполагает предварительных знаний в этой области. Вдумчиво читая ее, вы научитесь писать надежные и элегантные многопоточные программы на С++11. Вы узнаете о том, что такое потоковая модель памяти, и о том, какие средства поддержки многопоточности, в том числе запуска и синхронизации потоков, имеются в стандартной библиотеке. Попутно вы познакомитесь с различными нетривиальными проблемами программирования в условиях параллелизма.

Параллельное программирование на С++ в действии. Практика разработки многопоточных программ - читать онлайн бесплатно полную версию (весь текст целиком)

Параллельное программирование на С++ в действии. Практика разработки многопоточных программ - читать книгу онлайн бесплатно, автор Энтони Уильямс
Тёмная тема
Сбросить

Интервал:

Закладка:

Сделать

volatile noexcept;

BaseType exchange(BaseType, memory_order = memory_order_seq_cst)

noexcept;

bool compare_exchange_strong(

BaseType & old_value, BaseType new_value,

memory_order order = memory_order_seq_cst) volatile noexcept;

bool compare_exchange_strong(

BaseType & old_value, BaseType new_value,

memory_order order = memory_order_seq_cst) noexcept;

bool compare_exchange_strong(

BaseType & old_value, BaseType new_value,

memory_order success_order,

memory_order failure_order) volatile noexcept;

bool compare_exchange_strong(

BaseType & old_value, BaseType new_value,

memory_order success_order,

memory_order failure_order) noexcept;

bool compare_exchange_weak(

BaseType & old_value, BaseType new_value,

memory_order order = memory_order_seq_cst)

volatile noexcept;

bool compare_exchange_weak(

BaseType & old_value, BaseType new_value,

memory_order order = memory_order_seq_cst) noexcept;

bool compare_exchange_weak(

BaseType & old_value, BaseType new_value,

memory_order success_order,

memory_order failure_order) volatile noexcept;

bool compare_exchange_weak(

BaseType & old_value, BaseType new_value,

memory_order success_order,

memory_order failure_order) noexcept;

operator BaseType() const volatile noexcept;

operator BaseType() const noexcept;

};

template

bool atomic_is_lock_free(

volatile const atomic*) noexcept;

template

bool atomic_is_lock_free(const atomic*)

noexcept;

template

void atomic_init(volatile atomic*, void*) noexcept;

template

void atomic_init(atomic*, void*) noexcept;

template

BaseType atomic_exchange(

volatile atomic*, memory_order) noexcept;

template

BaseType atomic_exchange(

atomic*, memory_order) noexcept;

template

BaseType atomic_exchange_explicit(

volatile atomic*, memory_order) noexcept;

template

BaseType atomic_exchange_explicit(

atomic*, memory_order) noexcept;

template

void atomic_store(volatile atomic*, BaseType) noexcept;

template

void atomic_store(atomic*, BaseType) noexcept;

template

void atomic_store_explicit(

volatile atomic*, BaseType, memory_order) noexcept;

template

void atomic_store_explicit(

atomic*, BaseType, memory_order) noexcept;

template

BaseType atomic_load(volatile const atomic*) noexcept;

template

BaseType atomic_load(const atomic*) noexcept;

template

BaseType atomic_load_explicit(

volatile const atomic*, memory_order) noexcept;

template

BaseType atomic_load_explicit(

const atomic*, memory_order) noexcept;

template

bool atomic_compare_exchange_strong(

volatile atomic*,

BaseType * old_value, BaseType new_value) noexcept;

template

bool atomic_compare_exchange_strong(

atomic*,

BaseType * old_value, BaseType new_value) noexcept;

template

bool atomic_compare_exchange_strong_explicit(

volatile atomic*, BaseType * old_value,

BaseType new_value, memory_order success_order,

memory_order failure_order) noexcept;

template

bool atomic_compare_exchange_strong_explicit(

atomic*,

BaseType * old_value, BaseType new_value,

memory_order success_order,

memory_order failure_order) noexcept;

template

bool atomic_compare_exchange_weak(

volatile atomic*,

BaseType * old_value, BaseType new_value) noexcept;

template

bool atomic_compare_exchange_weak(

atomic*,

BaseType * old_value, BaseType new_value) noexcept;

template

bool atomic_compare_exchange_weak_explicit(

volatile atomic*,

BaseType * old_value, BaseType new_value,

memory_order success_order,

memory_order failure_order) noexcept;

template

bool atomic_compare_exchange_weak_explicit(

atomic*,

BaseType * old_value, BaseType new_value,

memory_order success_order,

memory_order failure_order) noexcept;

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

STD::ATOMIC , КОНСТРУКТОР ПО УМОЛЧАНИЮ

Конструирует экземпляр std::atomicсо значением, инициализированным по умолчанию.

Объявление

atomic() noexcept;

Результат

Конструирует новый объект std::atomicсо значением, инициализированным по умолчанию. Для объектов со статическим временем жизни обеспечивается статическая инициализация.

Примечание. Если время жизни объекта std::atomicне статическое, то значение, которое будет иметь объект, инициализированный конструктором по умолчанию, непредсказуемо.

Исключения

Нет.

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

Неатомарно сохраняет указанное значение в объекте типа std::atomic.

Объявление

template

void atomic_init(

atomic volatile* p, BaseType v) noexcept;

template

void atomic_init(atomic* p, BaseType v) noexcept;

Результат

Неатомарно сохраняет значение vв *p. Вызов atomic_init()с передачей в качестве аргумента объекта atomic, который не был сконструирован по умолчанию или над которым производились какие-нибудь операции после конструирования, является неопределенным поведением.

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

Исключения

Нет.

STD::ATOMIC , КОНВЕРТИРУЮЩИЙ КОНСТРУКТОР

Конструирует экземпляр std::atomicиз переданного значения типа BaseType.

Объявление

constexpr atomic(BaseType b) noexcept;

Результат

Конструирует новый объект std::atomicиз значения b. Для объектов со статическим временем жизни обеспечивается статическая инициализация.

Исключения

Нет.

STD::ATOMIC , КОНВЕРТИРУЮЩИЙ ОПЕРАТОР ПРИСВАИВАНИЯ

Сохраняет новое значение в *this.

Объявление

BaseType operator=(BaseType b) volatile noexcept;

BaseType operator=(BaseType b) noexcept;

Результат

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.

Читать дальше
Тёмная тема
Сбросить

Интервал:

Закладка:

Сделать


Энтони Уильямс читать все книги автора по порядку

Энтони Уильямс - все книги автора в одном месте читать по порядку полные версии на сайте онлайн библиотеки LibKing.




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


Отзывы читателей о книге Параллельное программирование на С++ в действии. Практика разработки многопоточных программ, автор: Энтони Уильямс. Читайте комментарии и мнения людей о произведении.


Понравилась книга? Поделитесь впечатлениями - оставьте Ваш отзыв или расскажите друзьям

Напишите свой комментарий
x