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

Тут можно читать онлайн Энтони Уильямс - Параллельное программирование на С++ в действии. Практика разработки многопоточных программ - бесплатно полную версию книги (целиком) без сокращений. Жанр: 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. Вы узнаете о том, что такое потоковая модель памяти, и о том, какие средства поддержки многопоточности, в том числе запуска и синхронизации потоков, имеются в стандартной библиотеке. Попутно вы познакомитесь с различными нетривиальными проблемами программирования в условиях параллелизма.

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

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

Интервал:

Закладка:

Сделать

Объект std::future ,ассоциированный с асинхронным результатом конкретного экземпляра std::promise ,можно получить путем обращения к функции-члену get_future(). В асинхронный результат записывается либо значение типа ResultTypeфункцией-членом set_value(), либо исключение функцией-членом set_exception() .

Экземпляры std::promiseудовлетворяют требованиям концепций MoveConstructibleи MoveAssignable, но не CopyConstructible или CopyAssignable .

Определение класса

template

class promise {

public:

promise();

promise(promise&&) noexcept;

~promise();

promise& operator=(promise&&) noexcept;

template

promise(std::allocator_arg_t, Allocator const&);

promise(promise const&) = delete;

promise& operator=(promise const&) = delete;

void swap(promise&) noexcept;

std::future get_future();

void set_value(see description);

void set_exception(std::exception_ptr p);

};

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

Конструирует объект std::promise.

Объявление

promise();

Результат

Конструирует экземпляр std::promise, с которым ассоциировал неготовый асинхронный результат типа ResultType.

Исключения

Исключение типа std::bad_alloc, если конструктор не смог выделить память для асинхронного результата.

STD::PROMISE , КОНСТРУКТОР С РАСПРЕДЕЛИТЕЛЕМ

Конструирует экземпляр std::promise, применяя предоставленный распределитель для выделения памяти под ассоциированный асинхронный результат.

Объявление

template

promise(std::allocator_arg_t, Allocator const& alloc);

Результат

Конструирует экземпляр std::promise, с которым ассоциировал неготовый асинхронный результат типа ResultType. Память под асинхронный результат выделяется с помощью распределителя alloc.

Исключения

Любое исключение, возбуждаемое распределителем в случае неудачной попытки выделить память под асинхронный результат.

STD::PROMISE , ПЕРЕМЕЩАЮЩИЙ КОНСТРУКТОР

Конструирует один объект std::promiseиз другого, передавая владение асинхронным результатом от объекта otherвновь сконструированному.

Объявление

promise(promise&& other) noexcept;

Результат

Конструирует новый экземпляр std::promise.

Постусловия

Асинхронный результат, который был ассоциирован с объектом otherдо вызова конструктор, ассоциируется с вновь сконструированным объектом std::promise. С объектом otherбольше не ассоциирован никакой асинхронный результат.

Исключения

Нет.

STD::PROMISE , ПЕРЕМЕЩАЮЩИЙ ОПЕРАТОР ПРИСВАИВАНИЯ

Передает владение асинхронным результатом, ассоциированным с объектом std::promise, другому объекту.

Объявление

promise& operator=(promise&& other) noexcept;

Результат

Передает владение асинхронным результатом, ассоциированным с *this. Если с *thisуже был ассоциирован асинхронный результат, то результат становится готов , причем в него помещается исключение std::future_errorс кодом ошибки std::future_errc::broken_promise.

Постусловия

Асинхронный результат, который был ассоциирован с объектом otherдо вызова перемещающего оператора присваивания, ассоциируется с *this. С объектом otherбольше не ассоциирован никакой асинхронный результат.

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

*this

Исключения

Нет.

STD::PROMISE::SWAP , ФУНКЦИЯ-ЧЛЕН

Обменивает владение асинхронными результатами, ассоциированными с двумя объектами std::promise.

Объявление

void swap(promise& other);

Результат

Обменивает владение асинхронными результатами, ассоциированными с объектами otherи *this.

Постусловия

Асинхронный результат, который был ассоциирован с объектом otherдо вызова swap(если таковой действительно был), ассоциируется с *this. Асинхронный результат, который был ассоциирован с объектом *thisдо вызова swap(если таковой действительно был), ассоциируется с other.

Исключения

Нет.

STD::PROMISE , ДЕСТРУКТОР

Уничтожает объект std::promise.

Объявление

~promise();

Результат

Уничтожает *this. Если с *thisассоциирован асинхронный результат и в этом результате не хранится задача или исключение, то результат становится готов , причем в него помещается исключение std::future_errorс кодом ошибки std::future_errc::broken_promise.

Исключения

Нет.

STD::PROMISE::GET_FUTURE , ФУНКЦИЯ-ЧЛЕН

Извлекает экземпляр std::futureдля асинхронного результата, ассоциированного с *this.

Объявление

std::future get_future();

Предусловия

С *thisассоциировал асинхронный результат.

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

Экземпляр std::futureдля асинхронного результата, ассоциированного с *this.

Исключения

Исключение типа std::future_errorс кодом ошибки std::future_errc::future_already_retrieved, если объект std::futureуже был получен для этого асинхронного результата с помощью предшествующего обращения к get_future().

STD::PROMISE::SET_VALUE , ФУНКЦИЯ-ЧЛЕН

Сохраняет значение в асинхронном результате, ассоциированном с *this.

Объявление

void promise::set_value();

void promise::set_value(R& r);

void promise::set_value(R const& r);

void promise::set_value(R&& r);

Предусловия

С *thisассоциирован асинхронный результат.

Результат

Сохраняет rв асинхронном результате, ассоциированном с *this, если ResultType— не void.

Постусловия

Асинхронный результат, ассоциированный с *this, готов и содержит значение. Все потоки, ожидающие асинхронного результата, разблокируются.

Исключения

Исключение типа std::future_errorс кодом ошибки std::future_errc::promise_already_satisfied, если в асинхронном результате уже находится значение или исключение. Любое исключение, возбужденное копирующим или перемещающим конструктором r.

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

Обращения к set_value(), set_value_at_thread_exit(), set_exception()и set_exception_at_thread_exit()сериализуются. Успешное обращение к set_value()происходит-раньше обращения к функции std::future::get()или std::shared_future::get(), которая извлекает сохраненное значение.

STD::PROMISE::SET_VALUE_AT_THREAD_EXIT , ФУНКЦИЯ-ЧЛЕН

Сохраняет значение в асинхронном результате, ассоциированном с *this, но не делает этот результат готовым раньше момента завершения потока.

Объявление

void promise::set_value_at_thread_exit();

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

Интервал:

Закладка:

Сделать


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

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




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


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


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

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