Параллельное программирование на С++ в действии. Практика разработки многопоточных программ - [179]
>typedef см. описание atomic_uint_least16_t;
>typedef см. описание atomic_int_least32_t;
>typedef см. описание atomic_uint_least32_t;
>typedef см. описание atomic_int_least64_t;
>typedef см. описание atomic_uint_least64_t;
>typedef см. описание atomic_int_fast8_t;
>typedef см. описание atomic_uint_fast8_t;
>typedef см. описание atomic_int_fast16_t;
>typedef см. описание atomic_uint_fast16_t;
>typedef см. описание atomic_int_fast32_t;
>typedef см. описание atomic_uint_fast32_t;
>typedef см. описание atomic_int_fast64_t;
>typedef см. описание atomic_uint_fast64_t;
>typedef см. описание atomic_int8_t;
>typedef см. описание atomic_uint8_t;
>typedef см. описание atomic_int16_t;
>typedef см. описание atomic_uint16_t;
>typedef см. описание atomic_int32_t;
>typedef см. описание atomic_uint32_t;
>typedef см. описание atomic_int64_t;
>typedef см. описание atomic_uint64_t;
>typedef см. описание atomic_intptr_t;
>typedef см. описание atomic_uintptr_t;
>typedef см. описание atomic_size_t;
>typedef см. описание atomic_ssize_t;
>typedef см. описание atomic_ptrdiff_t;
>typedef см. описание atomic_intmax_t;
>typedef см. описание atomic_uintmax_t;
>template
>struct atomic;
>extern "C" void atomic_thread_fence(memory_order order);
>extern "C" void atomic_signal_fence(memory_order order);
>template
>T kill_dependency(T);
>}
D.3.1. >std::atomic_xxx, псевдонимы типов
Для совместимости с ожидаемым стандартом С предоставляются псевдонимы >typedef для атомарных целочисленных типов. Это псевдонимы либо соответствующей специализации >std::atomic, либо базового класса этой специализации с таким же интерфейсом.
Таблица D.1. Псевдонимы атомарных типов и соответствующие им специализации >std::atomic<>
>std::atomic_itype | Специализация >std::atomic<> |
|---|---|
>std::atomic_char | >std::atomic |
>std::atomic_schar | >std::atomic |
>std::atomic_uchar | >std::atomic |
>std::atomic_short | >std::atomic |
>std::atomic_ushort | >std::atomic |
>std::atomic_int | >std::atomic |
>std::atomic_uint | >std::atomic |
>std::atomic_long | >std::atomic |
>std::atomic_ulong | >std::atomic |
>std::atomic_llong | >std::atomic |
>std::atomic_ullong | >std::atomic |
>std::atomic_wchar_t | >std::atomic |
>std::atomic_char16_t | >std::atomic |
>std::atomic_char32_t | >std::atomic |
D.3.2. >ATOMIC_xxx_LOCK_FREE, макросы
Эти макросы определяют, являются ли атомарные типы, соответствующие различным встроенным типам, свободными от блокировок.
Объявления макросов
>#define ATOMIC_BOOL_LOCK_FREE см. описание
>#define ATOMIC_CHAR_LOCK_FREE см. описание
>#define ATOMIC_SHORT_LOCK_FREE см. описание
>#define ATOMIC_INT_LOCK_FREE см. описание
>#define ATOMIC_LONG_LOCK_FREE см. описание
>#define ATOMIC_LLONG_LOCK_FREE см. описание
>#define ATOMIC_CHAR16_T_LOCK_FREE см. описание
>#define ATOMIC_CHAR32_T_LOCK_FREE см. описание
>#define ATOMIC_WCHAR_T_LOCK_FREE см. описание
>#define ATOMIC_POINTER_LOCK_FREE см. описание
Значением >ATOMIC_xxx_LOCK_FREE может быть 0, 1 или 2. Значение 0 означает, что операции над знаковыми и беззнаковыми атомарными типами, соответствующими типу >xxx, никогда не свободны от блокировок; 1 — что операции могут быть свободны от блокировок для одних экземпляров этих типов и не свободны для других; 2 — что операции всегда свободны от блокировок. Например, если ATOMIC>_INT_LOCK_FREE равно 2, то операции над любыми экземплярами >std::atomic и >std::atomic свободны от блокировок.
Макрос >ATOMIC_POINTER_LOCK_FREE позволяет узнать, свободны ли от блокировок операции над атомарными специализациями указателя >std::atomic.
D.3.3. >ATOMIC_VAR_INIT, макрос
Макрос >ATOMIC_VAR_INIT позволяет инициализировать атомарную переменную конкретным значением.
Объявление
>#define ATOMIC_VAR_INIT(value) см. описание
Макрос расширяется в последовательность лексем, которую можно использовать в выражении следующего вида для инициализации одного из стандартных атомарных типов указанным значением:
>std::atomic
Указанное значение должно быть совместимо с неатомарным типом, соответствующим данной атомарной переменной, например:
>std::atomic
>std::string s;
>std::atomic
Такая инициализация не атомарна, то есть любой доступ из другого потока к инициализируемой переменной в случае, когда инициализация не происходит-раньше этого доступа, приводит к гонке за данными и, следовательно, к неопределённому поведению.
D.3.4. >std::memory_order, перечисление
Перечисление >std::memory_order применяется для задания упорядочения доступа к памяти при выполнении атомарных операций.
Объявление
>typedef enum memory_order {
> memory_order_relaxed, memory_order_consume,
> memory_order_acquire, memory_order_release,
> memory_order_acq_rel, memory_order_seq_cst
>} memory_order;
Операции, помеченные элементами этого перечисления, ведут себя, как описано ниже (подробное описание упорядочения доступа к памяти см. в главе 5).
>STD::MEMORY_ORDER_RELAXED
Операция не обеспечивает никаких дополнительных ограничений на упорядочение.
>STD::MEMORY_ORDER_RELEASE
Операция освобождения указанной ячейки памяти. Следовательно, она синхронизируется-с операцией захвата той же ячейки памяти, которая читает сохраненное значение.
Это знаменитый бестселлер, который научит вас использовать власть массового сотрудничества и покажет, как применять викиномику в вашем бизнесе. Переведенная более чем на двадцать языков и неоднократно номинированная на звание лучшей бизнес-книги, "Викиномика" стала обязательным чтением для деловых людей во всем мире. Она разъясняет, как массовое сотрудничество происходит не только на сайтах Wikipedia и YouTube, но и в традиционных компаниях, использующих технологии для того, чтобы вдохнуть новую жизнь в свои предприятия.Дон Тапскотт и Энтони Уильямс раскрывают принципы викиномики и рассказывают потрясающие истории о том, как массы людей (как за деньги, так и добровольно) создают новости, изучают геном человека, создают ремиксы любимой музыки, находят лекарства от болезней, редактируют школьные учебники, изобретают новую косметику, пишут программное обеспечение и даже строят мотоциклы.Знания, ресурсы и вычислительные способности миллиардов людей самоорганизуются и превращаются в новую значительную коллективную силу, действующую согласованно и управляемую с помощью блогов, вики, чатов, сетей равноправных партнеров и личные трансляции.
Разработчику часто требуется много сторонних инструментов, чтобы создавать и поддерживать проект. Система Git — один из таких инструментов и используется для контроля промежуточных версий вашего приложения, позволяя вам исправлять ошибки, откатывать к старой версии, разрабатывать проект в команде и сливать его потом. В книге вы узнаете об основах работы с Git: установка, ключевые команды, gitHub и многое другое.В книге рассматриваются следующие темы:основы Git;ветвление в Git;Git на сервере;распределённый Git;GitHub;инструменты Git;настройка Git;Git и другие системы контроля версий.
Автор книги — американский специалист по программированию, один из руководителей фирмы IBM, в своей книге делает попытку изложить общие проблемы создания программного обеспечения, его сопровождения и использования. Особенно подробно рассматриваются все фазы разработки программ разных типов. Изложение ясное, удачно иллюстрировано примерами.Для программистов разной квалификации и пользователей ЭВМ.fb2: ВНИМАНИЕ. В тексте присутствуют таблицы. Рекомендуется читать файл с помощью программы, поддерживающей их отображение.
В книге рассказывается история главного героя, который сталкивается с различными проблемами и препятствиями на протяжении всего своего путешествия. По пути он встречает множество второстепенных персонажей, которые играют важные роли в истории. Благодаря опыту главного героя книга исследует такие темы, как любовь, потеря, надежда и стойкость. По мере того, как главный герой преодолевает свои трудности, он усваивает ценные уроки жизни и растет как личность.
В книге рассказывается история главного героя, который сталкивается с различными проблемами и препятствиями на протяжении всего своего путешествия. По пути он встречает множество второстепенных персонажей, которые играют важные роли в истории. Благодаря опыту главного героя книга исследует такие темы, как любовь, потеря, надежда и стойкость. По мере того, как главный герой преодолевает свои трудности, он усваивает ценные уроки жизни и растет как личность.
В книге рассказывается история главного героя, который сталкивается с различными проблемами и препятствиями на протяжении всего своего путешествия. По пути он встречает множество второстепенных персонажей, которые играют важные роли в истории. Благодаря опыту главного героя книга исследует такие темы, как любовь, потеря, надежда и стойкость. По мере того, как главный герой преодолевает свои трудности, он усваивает ценные уроки жизни и растет как личность.
Очень часто под рукой не оказывается ни отладчика, ни дизассемблера, ни даже компилятора, чтобы набросать хотя бы примитивный трассировщик. Разумеется, что говорить о взломе современных защитных механизмов в таких условиях просто смешно, но что делать если жизнь заставляет?..