Параллельное программирование на С++ в действии. Практика разработки многопоточных программ - [191]
Объявление
>T* atomic_fetch_sub(
> volatile atomic
>T* atomic_fetch_sub(atomic
Результат
>return p->fetch_sub(i);
>STD::ATOMIC_FETCH_SUB_EXPLICIT, ФУНКЦИЯ, HE ЯВЛЯЮЩАЯСЯ ЧЛЕНОМ КЛАССА
Атомарно читает значение из экземпляра >atomic и заменяет его разностью этого значения и аргумента >i, применяя стандартные правила арифметики указателей.
Объявление
>T* atomic_fetch_sub_explicit(
> volatile atomic
> noexcept;
>T* atomic_fetch_sub_explicit(
> atomic
Результат
>return p->fetch_sub(i, order);
>STD::ATOMIC, ОПЕРАТОР ПРЕДИНКРЕМЕНТА
Атомарно инкрементирует значение, хранящееся в >*this, применяя стандартные правила арифметики указателей, и возвращает новое значение.
Объявление
>T* operator++() volatile noexcept;
>T* operator++() noexcept;
Результат
>return this->fetch_add(1) + 1;
>STD::ATOMIC, ОПЕРАТОР ПОСТИНКРЕМЕНТА
Атомарно инкрементирует значение, хранящееся в >*this, и возвращает старое значение.
Объявление
>T* operator++(int) volatile noexcept;
>T* operator++(int) noexcept;
Результат
>return this->fetch_add(1);
>STD::ATOMIC, ОПЕРАТОР ПРЕДЕКРЕМЕНТА
Атомарно декрементирует значение, хранящееся в >*this, применяя стандартные правила арифметики указателей, и возвращает новое значение.
Объявление
>T* operator--() volatile noexcept;
>T* operator--() noexcept;
Результат
>return this->fetch_sub(1) - 1;
>STD::ATOMIC, ОПЕРАТОР ПОСТДЕКРЕМЕНТА
Атомарно декрементирует значение, хранящееся в >*this, применяя стандартные правила арифметики указателей, и возвращает старое значение.
Объявление
>T* operator--(int) volatile noexcept;
>T* operator--(int) noexcept;
Результат
>return this->fetch_sub(1);
>STD::ATOMIC, СОСТАВНОЙ ОПЕРАТОР ПРИСВАИВАНИЯ
Атомарно складывает значение аргумента со значением, хранящимся в >*this, применяя стандартные правила арифметики указателей, и возвращает новое значение.
Объявление
>T* operator+=(ptrdiff_t i) volatile noexcept;
>T* operator+=(ptrdiff_t i) noexcept;
Результат
>return this->fetch_add(i) + i;
>STD::ATOMIC, СОСТАВНОЙ ОПЕРАТОР ПРИСВАИВАНИЯ
Атомарно вычитает значение аргумента из значения, хранящегося в >*this, применяя стандартные правила арифметики указателей, и возвращает новое значение.
Объявление
>T* operator-=(ptrdiff_t i) volatile noexcept;
>T* operator-=(ptrdiff_t i) noexcept;
Результат
>return this->fetch_sub(i) - i;
D.4. Заголовок >
В заголовке > объявлены средства для обработки результатов асинхронных операций, которые могли быть выполнены в другом потоке.
Содержимое заголовка
>namespace std {
>enum class future_status {
> ready, timeout, deferred
>};
>enum class future_errc {
> broken_promise,
> future_already_retrieved,
> promise_already_satisfied,
> no_state
>};
>class future_error;
>const error_category& future_category();
>error_code make_error_code(future_errc e);
>error_condition make_error_condition(future_errc e);
>template
>class future;
>template
>class shared_future;
>template
>class promise;
>template
>class packaged_task; // определение не предоставляется
>template
>class packaged_task
>enum class launch {
> async, deferred
>};
>template
>future
>async(FunctionType&& func, Args&& ... args);
>template
>future
>async(std::launch policy, FunctionType&& func, Args&& ... args);
>}
D.4.1. Шаблон класса >std::future
Шаблон класса >std::future предоставляет средства для ожидания результата асинхронной операции, начатой в другом потоке, и используется в сочетании с шаблонами классов >std::promise и >std::packaged_task и шаблоном функции >std::async, которая применяется для возврата асинхронного результата. В каждый момент времени только один экземпляр >std::future может ссылаться на данный асинхронный результат.
Экземпляры >std::future удовлетворяют требованиям концепций >MoveConstructible и >MoveAssignable, но не концепций >CopyConstructible и >CopyAssignable.
Определение класса
>template
>class future {
>public:
> future() noexcept;
> future(future&&) noexcept;
> future& operator=(future&&) noexcept;
> ~future();
> future(future const&) = delete;
> future& operator=(future const&) = delete;
> shared_future
> bool valid() const noexcept;
> см. описание get();
> void wait();
> template
> future_status wait_for(
> std::chrono::duration
> template
> future_status wait_until(
> std::chrono::time_point
>};
>STD::FUTURE, КОНСТРУКТОР ПО УМОЛЧАНИЮ
Конструирует объект >std::future, с которым не связан асинхронный результат.
Объявление
>future() noexcept;
Результат
Конструирует новый экземпляр >std::future.
Это знаменитый бестселлер, который научит вас использовать власть массового сотрудничества и покажет, как применять викиномику в вашем бизнесе. Переведенная более чем на двадцать языков и неоднократно номинированная на звание лучшей бизнес-книги, "Викиномика" стала обязательным чтением для деловых людей во всем мире. Она разъясняет, как массовое сотрудничество происходит не только на сайтах Wikipedia и YouTube, но и в традиционных компаниях, использующих технологии для того, чтобы вдохнуть новую жизнь в свои предприятия.Дон Тапскотт и Энтони Уильямс раскрывают принципы викиномики и рассказывают потрясающие истории о том, как массы людей (как за деньги, так и добровольно) создают новости, изучают геном человека, создают ремиксы любимой музыки, находят лекарства от болезней, редактируют школьные учебники, изобретают новую косметику, пишут программное обеспечение и даже строят мотоциклы.Знания, ресурсы и вычислительные способности миллиардов людей самоорганизуются и превращаются в новую значительную коллективную силу, действующую согласованно и управляемую с помощью блогов, вики, чатов, сетей равноправных партнеров и личные трансляции.
В книге рассказывается история главного героя, который сталкивается с различными проблемами и препятствиями на протяжении всего своего путешествия. По пути он встречает множество второстепенных персонажей, которые играют важные роли в истории. Благодаря опыту главного героя книга исследует такие темы, как любовь, потеря, надежда и стойкость. По мере того, как главный герой преодолевает свои трудности, он усваивает ценные уроки жизни и растет как личность.
Вниманию читателей предлагается справочник по PHP.Справочник предназначается для людей, уже освоивших азы программирования на языке PHP.Справочник создан на основе информации, предоставленной на сайте «Справочник Web-языков» www.spravkaweb.ru.
Эта книга поможет новичку стать профессионалом, так как в ней представлен сконцентрированный лучший опыт программистов на С++, обобщенный двумя экспертами мирового класса.Начинающий программист найдет в ней простые и понятные рекомендации для ежедневного использования, подкрепленные примерами их конкретного применения на практике.Опытные программисты найдут в ней советы и новые рекомендации, которые можно сразу же принять на вооружение. Программисты-профессионалы могут использовать эту книгу как основу для разработки собственных стандартов кодирования, как для себя лично, так и для группы, которой они руководят.Конечно, книга рассчитана в первую очередь на профессиональных программистов с глубокими знаниями языка, однако она будет полезна любому, кто захочет углубить свои знания в данной области.
Цель книги – познакомить читателей с существующими подходами и решениями в области моделирования бизнес-архитектуры предприятия. В книге освещаются различные аспекты данной проблематики, в том числе такие вопросы как базовые подходы к моделированию и возможности современных инструментальных средств.Особое внимание уделяется специфике организации проектов по разработке моделей бизнес-архитекуры. На основе практического опыта реализации проектов по моделированию бизнес-процессов в различных предметных областях проанализированы и обобщены типичные риски, ошибки и заблуждения основных участников, даны рекомендации по их предупреждению.
В книге широко представлены возможности новейшей версии программного продукта Microsoft Visual C++. Подробно описаны средства и подходы программирования современных профессиональных приложений. Материалы книги дополнены многочисленными демонстрационными программами, в процессе разработки которых максимально используются возможности программных инструментов Microsoft Visual Studio. Особое внимание уделено новинкам версии 6.0 и новейшим технологиям объектно-ориентированного программирования, включая использование библиотеки MFC и шаблонов классов, а также создание связанных списков.
В книге рассказывается история главного героя, который сталкивается с различными проблемами и препятствиями на протяжении всего своего путешествия. По пути он встречает множество второстепенных персонажей, которые играют важные роли в истории. Благодаря опыту главного героя книга исследует такие темы, как любовь, потеря, надежда и стойкость. По мере того, как главный герой преодолевает свои трудности, он усваивает ценные уроки жизни и растет как личность.