Параллельное программирование на С++ в действии. Практика разработки многопоточных программ - [195]
>Clock::now(), больше или равно >absolute_time в точке, где поток разблокировался.Исключения
Нет.
>STD::SHARED_FUTURE::GET, ФУНКЦИЯ-ЧЛЕН
Если ассоциированное состояние содержит отложенную функцию, полученную в результате обращения к >std::async, то вызывает эту функцию и возвращает результат. В противном случае ждет готовности асинхронного результата, ассоциированного с экземпляром >std::shared_future, а затем либо возвращает сохраненное в нем значение, либо возбуждает сохраненное в нем исключение.
Объявление
>void shared_future
>R& shared_future
>R const& shared_future
Предусловия
>this->valid() должно возвращать >true.
Результат
Обращения из нескольких потоков к функциям >get() и >wait() экземпляров >std::shared_future, разделяющих одно и то же ассоциированное состояние, сериализуются. Если ассоциированное состояние содержит отложенную функцию, то первое обращение к >get() или >wait() приводит к вызову этой функции и сохранению возвращенного ей значения или возбужденного ей исключения в асинхронном результате.
Блокирует поток, пока не будет готов асинхронный результат, ассоциированный с >*this. Если в результате хранится исключение, возбуждает его, иначе возвращает хранящееся значение.
Возвращаемое значение
Если >ResultType — >void, то функция просто возвращает управление. Если >ResultType — >R& для некоторого типа >R, то возвращает хранящуюся ссылку. Иначе возвращает константную ссылку на хранящееся значение.
Исключения
Хранящееся исключение, если таковое имеется.
D.4.3. Шаблон класса >std::packaged_task
Шаблон класса >std::packaged_task упаковывает функцию или другой допускающий вызов объект, так что при вызове функции через экземпляр >std::packaged_task результат сохраняется в виде асинхронного результата, который может быть получен с помощью объекта >std::future.
Экземпляры >std::packaged_task удовлетворяют требованиям концепций >MoveConstructible и >MoveAssignable, но не >CopyConstructible и >CopyAssignable.
Определение класса
>template
>class packaged_task; // не определен
>template
>class packaged_task
>public:
>packaged_task() noexcept;
>packaged_task(packaged_task&&) noexcept;
>~packaged_task();
>packaged_task& operator=(packaged_task&&) noexcept;
>packaged_task(packaged_task const&) = delete;
>packaged_task& operator=(packaged_task const&) = delete;
>void swap(packaged_task&) noexcept;
>template
>explicit packaged_task(Callable&& func);
>template
>packaged_task(
>std::allocator_arg_t, const Allocator&, Callable&&);
>bool valid() const noexcept;
>std::future
>void operator()(ArgTypes...);
>void make_ready_at_thread_exit(ArgTypes...); void reset();
>};
>STD::PACKAGED_TASK, КОНСТРУКТОР ПО УМОЛЧАНИЮ
Конструирует объект >std::packaged_task.
Объявление
>packaged_task() noexcept;
Результат
Конструирует экземпляр >std::packaged_task, с которым не ассоциировала ни задача, ни асинхронный результат.
Исключения
Нет.
>STD::PACKAGED_TASK, КОНСТРУИРОВАНИЕ ИЗ ДОПУСКАЮЩЕГО ВЫЗОВ ОБЪЕКТА
Конструирует экземпляр >std::packaged_task, с которым ассоциированы задача и асинхронный результат.
Объявление
>template
>packaged_task(Callable&& func);
Предусловия
Должно быть допустимо выражение >func(args...), где каждый элемент >args-i в списке >args... должен быть значением соответственного типа >ArgTypes-i в списке >ArgTypes.... Возвращаемое значение должно допускать преобразование в тип >ResultType.
Результат
Конструирует экземпляр >std::packaged_task, с которым ассоциированы еще не готовый асинхронный результат типа >ResultType и задача типа >Callable, полученная копированием >func.
Исключения
Исключение типа >std::bad_alloc, если конструктор не смог выделить память для асинхронного результата. Любое исключение, возбуждаемое копирующим или перемещающим конструктором >Callable.
>STD::PACKAGED_TASK, КОНСТРУИРОВАНИЕ ИЗ ДОПУСКАЮЩЕГО ВЫЗОВ ОБЪЕКТА С РАСПРЕДЕЛИТЕЛЕМ
Конструирует экземпляр >std::packaged_task, с которым ассоциированы задача и асинхронный результат, применяя предоставленный распределитель для выделения памяти под асинхронный результат и задачу
Объявление
>template
>packaged_task(
>std::allocator_arg_t, Allocator const& alloc, Callable&& func);
Предусловия
Должно быть допустимо выражение >func(args...), где каждый элемент >args-i в списке >args... должен быть значением соответственного типа >ArgTypes-i в списке >ArgTypes.... Возвращаемое значение должно допускать преобразование в тип >ResultType.
Результат
Конструирует экземпляр >std::packaged_task, с которым ассоциированы еще не готовый асинхронный результат типа >ResultType и задача типа >Callable, полученная копированием >func. Память под асинхронный результат и задачу выделяется с помощью распределителя >alloc или его копии.
Исключения
Любое исключение, возбуждаемое распределителем в случае неудачной попытки выделить память под асинхронный результат или задачу. Любое исключение, возбуждаемое копирующим или перемещающим конструктором
Это знаменитый бестселлер, который научит вас использовать власть массового сотрудничества и покажет, как применять викиномику в вашем бизнесе. Переведенная более чем на двадцать языков и неоднократно номинированная на звание лучшей бизнес-книги, "Викиномика" стала обязательным чтением для деловых людей во всем мире. Она разъясняет, как массовое сотрудничество происходит не только на сайтах Wikipedia и YouTube, но и в традиционных компаниях, использующих технологии для того, чтобы вдохнуть новую жизнь в свои предприятия.Дон Тапскотт и Энтони Уильямс раскрывают принципы викиномики и рассказывают потрясающие истории о том, как массы людей (как за деньги, так и добровольно) создают новости, изучают геном человека, создают ремиксы любимой музыки, находят лекарства от болезней, редактируют школьные учебники, изобретают новую косметику, пишут программное обеспечение и даже строят мотоциклы.Знания, ресурсы и вычислительные способности миллиардов людей самоорганизуются и превращаются в новую значительную коллективную силу, действующую согласованно и управляемую с помощью блогов, вики, чатов, сетей равноправных партнеров и личные трансляции.
Вниманию читателей предлагается справочник по PHP.Справочник предназначается для людей, уже освоивших азы программирования на языке PHP.Справочник создан на основе информации, предоставленной на сайте «Справочник Web-языков» www.spravkaweb.ru.
Эта книга поможет новичку стать профессионалом, так как в ней представлен сконцентрированный лучший опыт программистов на С++, обобщенный двумя экспертами мирового класса.Начинающий программист найдет в ней простые и понятные рекомендации для ежедневного использования, подкрепленные примерами их конкретного применения на практике.Опытные программисты найдут в ней советы и новые рекомендации, которые можно сразу же принять на вооружение. Программисты-профессионалы могут использовать эту книгу как основу для разработки собственных стандартов кодирования, как для себя лично, так и для группы, которой они руководят.Конечно, книга рассчитана в первую очередь на профессиональных программистов с глубокими знаниями языка, однако она будет полезна любому, кто захочет углубить свои знания в данной области.
Цель книги – познакомить читателей с существующими подходами и решениями в области моделирования бизнес-архитектуры предприятия. В книге освещаются различные аспекты данной проблематики, в том числе такие вопросы как базовые подходы к моделированию и возможности современных инструментальных средств.Особое внимание уделяется специфике организации проектов по разработке моделей бизнес-архитекуры. На основе практического опыта реализации проектов по моделированию бизнес-процессов в различных предметных областях проанализированы и обобщены типичные риски, ошибки и заблуждения основных участников, даны рекомендации по их предупреждению.
В книге широко представлены возможности новейшей версии программного продукта Microsoft Visual C++. Подробно описаны средства и подходы программирования современных профессиональных приложений. Материалы книги дополнены многочисленными демонстрационными программами, в процессе разработки которых максимально используются возможности программных инструментов Microsoft Visual Studio. Особое внимание уделено новинкам версии 6.0 и новейшим технологиям объектно-ориентированного программирования, включая использование библиотеки MFC и шаблонов классов, а также создание связанных списков.
В книге рассказывается история главного героя, который сталкивается с различными проблемами и препятствиями на протяжении всего своего путешествия. По пути он встречает множество второстепенных персонажей, которые играют важные роли в истории. Благодаря опыту главного героя книга исследует такие темы, как любовь, потеря, надежда и стойкость. По мере того, как главный герой преодолевает свои трудности, он усваивает ценные уроки жизни и растет как личность.
В книге рассказывается история главного героя, который сталкивается с различными проблемами и препятствиями на протяжении всего своего путешествия. По пути он встречает множество второстепенных персонажей, которые играют важные роли в истории. Благодаря опыту главного героя книга исследует такие темы, как любовь, потеря, надежда и стойкость. По мере того, как главный герой преодолевает свои трудности, он усваивает ценные уроки жизни и растет как личность.