Энтони Уильямс - Параллельное программирование на С++ в действии. Практика разработки многопоточных программ
- Название:Параллельное программирование на С++ в действии. Практика разработки многопоточных программ
- Автор:
- Жанр:
- Издательство:ДМК Пресс
- Год:2012
- Город:Москва
- ISBN:978-5-94074-448-1
- Рейтинг:
- Избранное:Добавить в избранное
-
Отзывы:
-
Ваша оценка:
Энтони Уильямс - Параллельное программирование на С++ в действии. Практика разработки многопоточных программ краткое содержание
Книга «Параллельное программирование на С++ в действии» не предполагает предварительных знаний в этой области. Вдумчиво читая ее, вы научитесь писать надежные и элегантные многопоточные программы на С++11. Вы узнаете о том, что такое потоковая модель памяти, и о том, какие средства поддержки многопоточности, в том числе запуска и синхронизации потоков, имеются в стандартной библиотеке. Попутно вы познакомитесь с различными нетривиальными проблемами программирования в условиях параллелизма.
Параллельное программирование на С++ в действии. Практика разработки многопоточных программ - читать онлайн бесплатно полную версию (весь текст целиком)
Интервал:
Закладка:
Определение класса
template
class shared_future {
public:
shared_future() noexcept;
shared_future(future&&) noexcept;
shared_future(shared_future&&) noexcept;
shared_future(shared_future const&);
shared_future& operator=(shared_future const&);
shared_future& operator=(shared_future&&) noexcept;
~shared_future();
bool valid() const noexcept;
см. описание get() const;
void wait() const;
template
future_status wait_for(
std::chrono::duration const& relative_time) const;
template
future_status wait_until(
std::chrono::time_point const& absolute_time)
const;
};
STD::SHARED_FUTURE , КОНСТРУКТОР ПО УМОЛЧАНИЮ
Конструирует объект std::shared_future, с которым не ассоциирован асинхронный результат.
Объявление
shared_future() noexcept;
Результат
Конструирует новый экземпляр std::shared_future.
Постусловия
Функция valid()вновь сконструированного экземпляра возвращает false.
Исключения
Нет.
STD::SHARED_FUTURE , ПЕРЕМЕЩАЮЩИЙ КОНСТРУКТОР
Конструирует один объект std::shared_futureиз другого, передавая владение асинхронным результатом, ассоциированным со старым объектом std::shared_future, вновь сконструированному.
Объявление
shared_future(shared_future&& other) noexcept;
Результат
Конструирует новый экземпляр std::shared_future.
Постусловия
Асинхронный результат, ассоциированный с объектом otherперед вызовом конструктора, ассоциируется с вновь сконструированным объектом std::shared_future. С объектом otherбольше не ассоциирован никакой асинхронный результат.
Исключения
Нет.
STD::SHARED_FUTURE , КОНСТРУКТОР MOVE-FROM- STD::FUTURE
Конструирует объект std::shared_futureиз объекта std::future, передавая владение асинхронным результатом, ассоциированным с объектом std::future, вновь сконструированному объекту std::shared_future.
Объявление
shared_future(std::future&& other) noexcept;
Результат
Конструирует новый экземпляр std::shared_future.
Постусловия
Асинхронный результат, ассоциированный с объектом other перед вызовом конструктора, ассоциируется с вновь сконструированным объектом std::shared_future. С объектом otherбольше не ассоциирован никакой асинхронный результат.
Исключения
Нет.
STD::SHARED_FUTURE , КОПИРУЮЩИЙ КОНСТРУКТОР
Конструирует один объект std::shared_futureиз другого, так что исходный объект и копия ссылаются на асинхронный результат, ассоциированный с исходным объектом std::shared_future, если таковой был.
Объявление
shared_future(shared_future const& other);
Результат
Конструирует новый экземпляр std::shared_future.
Постусловия
Асинхронный результат, ранее ассоциированный с объектом otherперед вызовом конструктора, теперь ассоциирован как с вновь сконструированным объектом std::shared_future, так и с объектом other.
Исключения
Нет.
STD::SHARED_FUTURE , ДЕСТРУКТОР
Уничтожает объект std::shared_future.
Объявление
~shared_future();
Результат
Уничтожает *this. Если больше не существует объекта std::promiseили std::packaged_task, ассоциированного с асинхронным результатом, который ассоциирован с *this, и это последний экземпляр std::shared_future, ассоциированный с этим асинхронным результатом, то асинхронный результат уничтожается.
Исключения
Нет.
STD::SHARED_FUTURE::VALID , ФУНКЦИЯ-ЧЛЕН
Проверяет, ассоциирован ли асинхронный результат с данным экземпляром std::shared_future.
Объявление
bool valid() const noexcept;
Возвращаемое значение
true, если с *thisассоциирован асинхронный результат, иначе false.
Исключения
Нет.
STD::SHARED_FUTURE::WAIT , ФУНКЦИЯ-ЧЛЕН
Если состояние, ассоциированное с *this, содержит отложенную функцию, то эта функция вызывается. В противном случае ждет, когда будет готов асинхронный результат, ассоциированный с данным экземпляром std::shared_future.
Объявление
void wait() const;
Предусловия
this->valid()должна возвращать true.
Результат
Обращения из нескольких потоков к функциям get()и wait()экземпляров std::shared_future, разделяющих одно и то же ассоциированное состояние, сериализуются. Если ассоциированное состояние содержит отложенную функцию, то первое обращение к get()или wait()приводит к вызову этой функции и сохранению возвращенного ей значения или возбужденного ей исключения в асинхронном результате. Блокирует поток, пока не будет готов асинхронный результат, ассоциированный с *this.
Исключения
Нет.
STD::SHARED_FUTURE::WAIT_FOR , ФУНКЦИЯ-ЧЛЕН
Ждет, когда будет готов асинхронный результат, ассоциированный с данным экземпляром std::shared_future, или истечет заданное время.
Объявление
template
future_status wait_for(
std::chrono::duration const& relative_time) const;
Предусловия
this->valid()должно возвращать true.
Результат
Если асинхронный результат, ассоциированный с *this, содержит отложенную функцию, полученную обращением к std::async, и эта функция, еще не начала исполняться, то возвращает управление немедленно без блокирования потока. В противном случае блокирует поток до момента готовности асинхронного результата, ассоциированного с *this, или до истечения времени, заданного в аргументе relative_time.
Возвращаемое значение
std::future_status::deferred, если асинхронный результат, ассоциированный с *this, содержит отложенную функцию, полученную обращением к std::async, и эта функция, еще не начала исполняться. std::future_status::ready, если асинхронный результат, ассоциированный с *this, готов, std::future_status::timeout, если истекло время, заданное в аргументе relative_time.
Примечание. Поток может быть заблокирован на время, превышающее указанное. Если возможно, время измеряется по стабильным часам.
Исключения
Нет.
STD::SHARED_FUTURE::WAIT_UNTIL , ФУНКЦИЯ-ЧЛЕН
Ждет, когда будет готов асинхронный результат, ассоциированный с данным экземпляром std::shared_future, или наступит заданный момент времени.
Объявление
template
bool wait_until(
std::chrono::time_point const& absolute_time) const;
Предусловия
this->valid()должно возвращать true.
Результат
Если асинхронный результат, ассоциированный с *this, содержит отложенную функцию, полученную обращением к std::async, и эта функция, еще не начала исполняться, то возвращает управление немедленно без блокирования потока. В противном случае блокирует поток до момента готовности асинхронного результата, ассоциированного с *this, или до момента, когда функция Clock::now()вернет время, большее или равное absolute_time.
Интервал:
Закладка: