Параллельное программирование на С++ в действии. Практика разработки многопоточных программ - [193]
>Clock::now() вернет время, большее или равное >absolute_time.Возвращаемое значение
>std::future_status::deferred, если асинхронный результат, ассоциированный с >*this, содержит отложенную функцию, полученную обращением к >std::async, и эта функция, еще не начала исполняться. >std::future_status::ready, если асинхронный результат, ассоциированный с >*this, готов, >std::future_status::timeout, если >Clock::now() вернула время, большее или равное >absolute_time.
Примечание. Не дается никаких гарантий относительно того, сколько времени будет блокирован вызывающий поток. Гарантируется лишь, что если функция вернула >std::future_status::timeout, то значение, возвращенное >Clock::now(), больше или равно >absolute_time в точке, где поток разблокировался.
Исключения
Нет.
>STD::FUTURE::GET, ФУНКЦИЯ-ЧЛЕН
Если ассоциированное состояние содержит отложенную функцию, полученную в результате обращения к >std::async, то вызывает эту функцию и возвращает результат. В противном случае ждет готовности асинхронного результата, ассоциированного с экземпляром >std::future, а затем либо возвращает сохраненное в нем значение, либо возбуждает сохраненное в нем исключение.
Объявление
>void future
>R& future
>R future
Предусловия
>this->valid() должно возвращать >true.
Результат
Если состояние, ассоциированное с >*this, содержит отложенную функцию, то вызывает эту функцию и возвращает результат или возбуждает хранящееся исключение. В противном случае блокирует поток до момента готовности асинхронного результата, ассоциированного с >*this. Если в результате хранится исключение, возбуждает его, иначе возвращает хранящееся значение.
Возвращаемое значение
Если ассоциированное состояние содержит отложенную функцию, то возвращает результат вызова этой функции. Иначе, если >ResultType — >void, то функция просто возвращает управление. Если >ResultType — >R& для некоторого типа >R, то возвращает хранящуюся ссылку. Иначе возвращает хранящееся значение.
Исключения
Исключение, возбужденное отложенной функцией или сохраненное в асинхронном результате (если таковое имеется).
Постусловие
>this->valid() == false
D.4.2. Шаблон класса >std::shared_future
Шаблон класса >std::shared_future предоставляет средства для ожидания результата асинхронной операции, начатой в другом потоке, и используется в сочетании с шаблонами классов >std::promise и >std::packaged_task и шаблоном функции >std::async, которая применяется для возврата асинхронного результата. В каждый момент времени ссылаться на один и тот же асинхронный результат могут несколько объектов >std::shared_future. Экземпляры >std::shared_future удовлетворяют требованиям концепций >CopyConstructible и >CopyAssignable. Разрешается также конструировать объект >std::shared_future перемещением из объекта >std::future с тем же самым параметром >ResultType.
Обращения к данному экземпляру >std::shared_future не синхронизированы. Поэтому доступ к одному экземпляру >std::shared_future из разных потоков без внешней синхронизации не безопасен. Однако обращения к ассоциированному состоянию синхронизированы, поэтому несколько потоков могут безопасно обращаться к разным экземплярам >std::shared_future, которые разделяют одно и то же ассоциированное состояние, без внешней синхронизации.
Определение класса
>template
>class shared_future {
>public:
>shared_future() noexcept;
>shared_future(future
>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
>template
>future_status wait_until(
>std::chrono::time_point
>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
Это знаменитый бестселлер, который научит вас использовать власть массового сотрудничества и покажет, как применять викиномику в вашем бизнесе. Переведенная более чем на двадцать языков и неоднократно номинированная на звание лучшей бизнес-книги, "Викиномика" стала обязательным чтением для деловых людей во всем мире. Она разъясняет, как массовое сотрудничество происходит не только на сайтах Wikipedia и YouTube, но и в традиционных компаниях, использующих технологии для того, чтобы вдохнуть новую жизнь в свои предприятия.Дон Тапскотт и Энтони Уильямс раскрывают принципы викиномики и рассказывают потрясающие истории о том, как массы людей (как за деньги, так и добровольно) создают новости, изучают геном человека, создают ремиксы любимой музыки, находят лекарства от болезней, редактируют школьные учебники, изобретают новую косметику, пишут программное обеспечение и даже строят мотоциклы.Знания, ресурсы и вычислительные способности миллиардов людей самоорганизуются и превращаются в новую значительную коллективную силу, действующую согласованно и управляемую с помощью блогов, вики, чатов, сетей равноправных партнеров и личные трансляции.
В книге рассказывается история главного героя, который сталкивается с различными проблемами и препятствиями на протяжении всего своего путешествия. По пути он встречает множество второстепенных персонажей, которые играют важные роли в истории. Благодаря опыту главного героя книга исследует такие темы, как любовь, потеря, надежда и стойкость. По мере того, как главный герой преодолевает свои трудности, он усваивает ценные уроки жизни и растет как личность.
Вниманию читателей предлагается справочник по PHP.Справочник предназначается для людей, уже освоивших азы программирования на языке PHP.Справочник создан на основе информации, предоставленной на сайте «Справочник Web-языков» www.spravkaweb.ru.
Эта книга поможет новичку стать профессионалом, так как в ней представлен сконцентрированный лучший опыт программистов на С++, обобщенный двумя экспертами мирового класса.Начинающий программист найдет в ней простые и понятные рекомендации для ежедневного использования, подкрепленные примерами их конкретного применения на практике.Опытные программисты найдут в ней советы и новые рекомендации, которые можно сразу же принять на вооружение. Программисты-профессионалы могут использовать эту книгу как основу для разработки собственных стандартов кодирования, как для себя лично, так и для группы, которой они руководят.Конечно, книга рассчитана в первую очередь на профессиональных программистов с глубокими знаниями языка, однако она будет полезна любому, кто захочет углубить свои знания в данной области.
Цель книги – познакомить читателей с существующими подходами и решениями в области моделирования бизнес-архитектуры предприятия. В книге освещаются различные аспекты данной проблематики, в том числе такие вопросы как базовые подходы к моделированию и возможности современных инструментальных средств.Особое внимание уделяется специфике организации проектов по разработке моделей бизнес-архитекуры. На основе практического опыта реализации проектов по моделированию бизнес-процессов в различных предметных областях проанализированы и обобщены типичные риски, ошибки и заблуждения основных участников, даны рекомендации по их предупреждению.
В книге широко представлены возможности новейшей версии программного продукта Microsoft Visual C++. Подробно описаны средства и подходы программирования современных профессиональных приложений. Материалы книги дополнены многочисленными демонстрационными программами, в процессе разработки которых максимально используются возможности программных инструментов Microsoft Visual Studio. Особое внимание уделено новинкам версии 6.0 и новейшим технологиям объектно-ориентированного программирования, включая использование библиотеки MFC и шаблонов классов, а также создание связанных списков.
В книге рассказывается история главного героя, который сталкивается с различными проблемами и препятствиями на протяжении всего своего путешествия. По пути он встречает множество второстепенных персонажей, которые играют важные роли в истории. Благодаря опыту главного героя книга исследует такие темы, как любовь, потеря, надежда и стойкость. По мере того, как главный герой преодолевает свои трудности, он усваивает ценные уроки жизни и растет как личность.