Параллельное программирование на С++ в действии. Практика разработки многопоточных программ - [197]
Объявление
>void make_ready_at_thread_exit(ArgTypes... args);
Предусловия
С >*this ассоциирована задача.
Результат
Вызывает ассоциированную задачу, как если бы было выполнено предложение >INVOKE(func, args...). Если вызов завершается нормально, то сохраняет возвращенное значение в асинхронном результате, ассоциированном с >*this. Если задача возбуждает исключение, то сохраняет это исключение в асинхронном результате, ассоциированном с >*this. Планирует перевод ассоциированного асинхронного результата в состояние готовности в момент завершения потока.
Постусловия
Асинхронный результат, ассоциированный с >*this, содержит значение или исключение, но не является готовым до завершения текущего потока. Все потоки, ожидающие асинхронного результата, будут разблокированы, когда текущий поток завершится.
Исключения
Исключение типа >std::future_error с кодом ошибки >std::future_errc::promise_already_satisfied, если в асинхронном результате уже находится значение или исключение. Исключение типа >std::future_error с кодом ошибки >std::future_errc::no_state, если с >*this не ассоциировано асинхронное состояние. Синхронизация
Завершение потока, в котором была успешно вызвала функция >make_ready_at_thread_exit(), синхронизируется-с обращением к >std::future или >std::shared_future, которое извлекает хранимое значение или исключение.
D.4.4. Шаблон класса >std::promise
Шаблон класса >std::promise предоставляет средства для установки асинхронного результата, который может быть получен в другом потоке с помощью экземпляра >std::future.
Параметр >ResultType — это тип значения, сохраняемого в асинхронном результате.
Объект >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
>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.
Постусловия
Асинхронный результат, который был ассоциирован с объектом
Это знаменитый бестселлер, который научит вас использовать власть массового сотрудничества и покажет, как применять викиномику в вашем бизнесе. Переведенная более чем на двадцать языков и неоднократно номинированная на звание лучшей бизнес-книги, "Викиномика" стала обязательным чтением для деловых людей во всем мире. Она разъясняет, как массовое сотрудничество происходит не только на сайтах Wikipedia и YouTube, но и в традиционных компаниях, использующих технологии для того, чтобы вдохнуть новую жизнь в свои предприятия.Дон Тапскотт и Энтони Уильямс раскрывают принципы викиномики и рассказывают потрясающие истории о том, как массы людей (как за деньги, так и добровольно) создают новости, изучают геном человека, создают ремиксы любимой музыки, находят лекарства от болезней, редактируют школьные учебники, изобретают новую косметику, пишут программное обеспечение и даже строят мотоциклы.Знания, ресурсы и вычислительные способности миллиардов людей самоорганизуются и превращаются в новую значительную коллективную силу, действующую согласованно и управляемую с помощью блогов, вики, чатов, сетей равноправных партнеров и личные трансляции.
Вниманию читателей предлагается справочник по PHP.Справочник предназначается для людей, уже освоивших азы программирования на языке PHP.Справочник создан на основе информации, предоставленной на сайте «Справочник Web-языков» www.spravkaweb.ru.
Эта книга поможет новичку стать профессионалом, так как в ней представлен сконцентрированный лучший опыт программистов на С++, обобщенный двумя экспертами мирового класса.Начинающий программист найдет в ней простые и понятные рекомендации для ежедневного использования, подкрепленные примерами их конкретного применения на практике.Опытные программисты найдут в ней советы и новые рекомендации, которые можно сразу же принять на вооружение. Программисты-профессионалы могут использовать эту книгу как основу для разработки собственных стандартов кодирования, как для себя лично, так и для группы, которой они руководят.Конечно, книга рассчитана в первую очередь на профессиональных программистов с глубокими знаниями языка, однако она будет полезна любому, кто захочет углубить свои знания в данной области.
Цель книги – познакомить читателей с существующими подходами и решениями в области моделирования бизнес-архитектуры предприятия. В книге освещаются различные аспекты данной проблематики, в том числе такие вопросы как базовые подходы к моделированию и возможности современных инструментальных средств.Особое внимание уделяется специфике организации проектов по разработке моделей бизнес-архитекуры. На основе практического опыта реализации проектов по моделированию бизнес-процессов в различных предметных областях проанализированы и обобщены типичные риски, ошибки и заблуждения основных участников, даны рекомендации по их предупреждению.
В книге широко представлены возможности новейшей версии программного продукта Microsoft Visual C++. Подробно описаны средства и подходы программирования современных профессиональных приложений. Материалы книги дополнены многочисленными демонстрационными программами, в процессе разработки которых максимально используются возможности программных инструментов Microsoft Visual Studio. Особое внимание уделено новинкам версии 6.0 и новейшим технологиям объектно-ориентированного программирования, включая использование библиотеки MFC и шаблонов классов, а также создание связанных списков.
В книге рассказывается история главного героя, который сталкивается с различными проблемами и препятствиями на протяжении всего своего путешествия. По пути он встречает множество второстепенных персонажей, которые играют важные роли в истории. Благодаря опыту главного героя книга исследует такие темы, как любовь, потеря, надежда и стойкость. По мере того, как главный герой преодолевает свои трудности, он усваивает ценные уроки жизни и растет как личность.
В книге рассказывается история главного героя, который сталкивается с различными проблемами и препятствиями на протяжении всего своего путешествия. По пути он встречает множество второстепенных персонажей, которые играют важные роли в истории. Благодаря опыту главного героя книга исследует такие темы, как любовь, потеря, надежда и стойкость. По мере того, как главный герой преодолевает свои трудности, он усваивает ценные уроки жизни и растет как личность.