atomic- все статьи тега
Атомарный Оператор Присваивания
Я использую очень легкую атомарную оболочку в качестве учебного упражнения для примитивных типов данных в C++ для Windows, и у меня есть несколько простых вопросов о реализации оператора присваивания. Рассмотрим две реализации ниже: // Simple assignment Atomic& Atomic::operator=(const Atomic& other) { mValue = other.mValue; return *this; } // Interlocked assignment Atomic& Atomic::operator=(const Atomic& other) { _InterlockedExchange(&mValue, other.mValue); ...
разница между атомным bool стандарта и атомным флагом
Я не знал о переменных std::atomic, но знал о переменных std::mutex (странно!) обеспечивается стандартом; однако одна вещь привлекла мое внимание: есть два, казалось бы, одинаковых (для меня) атомарных типа, предоставляемых стандартом, перечисленных ниже: std::atomic<bool> тип std::atomic_flag тип Также упоминается на примере std::atomic_flag type - Std:: atomic_flag-это атомарный булев тип. В отличие от всех специализаций std:: atomic, он гарантированно будет без блокировки ...
Понимание std:: atomic:: compare exchange weak() в C++11
bool compare_exchange_weak (T& expected, T val, ..); compare_exchange_weak() является одним из примитивов compare-exchange, представленных в C++11. Это ... слабый в том смысле, что он возвращает false, даже если значение объекта равно expected. Это связано с тем, что ложная неудача на некоторых платформах, где для его реализации используется последовательность инструкций (а не одна, как на x86). На таких платформах переключение контекста, перезагрузка того же адреса (или строки кэша) друг ...
В чем разница между атомными и неатомными атрибутами?
Что делать atomic и nonatomic означает в декларациях собственности? @property(nonatomic, retain) UITextField *userName; @property(atomic, retain) UITextField *userName; @property(retain) UITextField *userName; в чем различие между этими тремя? ...
В чем разница между atomic / volatile / synchronized?
как атомная / Летучая / синхронизированная работа внутри? в чем разница между следующими блоками кода? код 1 private int counter; public int getNextUniqueIndex() { return counter++; } код 2 private AtomicInteger counter; public int getNextUniqueIndex() { return counter.getAndIncrement(); } код 3 private volatile int counter; public int getNextUniqueIndex() { return counter++; } тут volatile работать следующим образом? Это volatile int i = 0; void incIBy5() { i + ...
Что означает "атомарный" в программировании?
в эффективной книге Java он гласит: спецификация языка гарантирует, что чтение или запись a переменная является атомарной, если переменная не имеет типа long или double [JLS, 17.4.7]. что означает "атомарный" в контексте программирования Java или программирования в целом? ...
Практическое применение для атомного интегратора
Я вроде понимаю, что AtomicInteger и другие атомарные переменные позволяют одновременный доступ. В каких случаях этот класс обычно используется? ...
Есть!= проверить потокобезопасность?
Я знаю, что сложные операции, такие как i++ не являются потокобезопасными, поскольку они включают несколько операции. но проверка ссылки сама по себе является потокобезопасной операцией? a != a //is this thread-safe я попробовал программу и использовать несколько потоков, но это не удастся. Наверное, я не мог имитировать гонку на своей машине. EDIT: public class TestThreadSafety { private Object a = new Object(); public static void main(String[] args) { final TestThreadS ...
AtomicInteger в и установить
В чем разница между lazySet и set способы AtomicInteger? Элемент документация не так уж много можно сказать о lazySet: в конечном итоге устанавливает заданное значение. похоже, что сохраненное значение не будет сразу установлено на нужное значение, но вместо этого будет запланировано установить некоторое время в будущем. Но, каково практическое применение этого метода? Какой-нибудь пример? ...
Почему Летучий квалификатор используется через out std:: atomic?
из того что я читал от Херб Саттер и другие можно подумать, что volatile и параллельное программирование были полностью ортогональными понятиями, по крайней мере, в том, что касается C/C++. однако, в GCC реализация все std::atomic функции-члены имеют volatile квалификатор. То же самое верно и в Энтони Уильямсе реализация на std::atomic. так в чем дело, у меня atomic<> переменные должны быть volatile или нет? ...
Что такое std::atomic?
Я понимаю, что std::atomic<> является атомарным объектом. Но атомный до какой степени? В моем понимании операция может быть атомной. Что именно подразумевается под атомизацией объекта? Например, если есть два потока одновременно выполнив следующий код: a = a + 12; тогда вся операция (скажем add_twelve_to(int)) атомный? Или изменения, внесенные в переменную atomic (so operator=())? ...
Где находится замок для std:: atomic?
если структура данных содержит несколько элементов, атомарная версия не может (всегда) быть без блокировки. Мне сказали, что это верно для больших типов, потому что процессор не может атомарно изменить данные без использования какой-то блокировки. например: #include <iostream> #include <atomic> struct foo { double a; double b; }; std::atomic<foo> var; int main() { std::cout << var.is_lock_free() << std::endl; std::cout << sizeof(foo) < ...