Вопросы с тегом «atomic»

Атомарная операция неделима. Этот термин используется, среди прочего, для описания транзакций в базах данных, низкоуровневого доступа в многопоточных программах и операций файловой системы.

26
В чем разница между атомарными и неатомарными атрибутами?
Что atomicи nonatomicозначает в декларациях собственности? @property(nonatomic, retain) UITextField *userName; @property(atomic, retain) UITextField *userName; @property(retain) UITextField *userName; В чем заключается оперативная разница между этими тремя?

7
В чем разница между атомарным / энергозависимым / синхронизированным?
Как атомарные / энергозависимые / синхронизированные работают внутри? В чем разница между следующими блоками кода? Код 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 …

6
Что означает «атомарный» в программировании?
В книге «Эффективная Java» говорится: Спецификация языка гарантирует, что чтение или запись переменной является атомарным, если переменная не имеет тип longили double[JLS, 17.4.7]. Что означает «атомарный» в контексте программирования на Java или программирования в целом?
276 java  atomic 


3
Что такое std :: atomic?
Я понимаю, что std::atomic<>это атомный объект. Но в какой степени? Насколько я понимаю, операция может быть атомарной. Что именно означает сделать объект атомарным? Например, если два потока одновременно выполняют следующий код: a = a + 12; Тогда вся операция (скажем add_twelve_to(int)) атомная? Или внесены изменения в переменную atomic (так operator=())?

13
Может ли num ++ быть атомарным для int num?
В общем случае for int num, num++(или ++num) как операция чтения-изменения-записи не является атомарной . Но я часто вижу, как компиляторы, например GCC , генерируют для него следующий код ( попробуйте здесь ): Так как строка 5, которая соответствует num++одной инструкции, можем ли мы сделать вывод, что num++ это атомарный …

8
Безопасна ли! = Проверка потоков?
Я знаю, что составные операции, например i++, не являются потокобезопасными, поскольку включают в себя несколько операций. Но является ли проверка ссылки на самой себе поточно-ориентированной операцией? a != a //is this thread-safe Я пытался запрограммировать это и использовать несколько потоков, но ничего не вышло. Думаю, я не мог смоделировать гонку …

5
Когда использовать volatile с многопоточностью?
Если есть два потока, обращающихся к глобальной переменной, то во многих руководствах говорится, что переменная должна быть изменчивой, чтобы компилятор не кэшировал переменную в регистре и, таким образом, не обновлялся правильно. Однако два потока, оба обращающиеся к общей переменной, - это то, что требует защиты через мьютекс, не так ли? …

6
AtomicInteger lazySet против набора
В чем разница между методами lazySetи ? В документации нечего сказать :setAtomicIntegerlazySet В конце концов устанавливается на заданное значение. Кажется, что сохраненное значение не будет сразу установлено на желаемое значение, а вместо этого будет запланировано установить какое-то время в будущем. Но какова практическая польза от этого метода? Любой пример?
116 java  concurrency  atomic 


4
Является ли добавление файла атомарным в UNIX?
В общем, что мы можем считать само собой разумеющимся, когда добавляем к файлу в UNIX несколько процессов? Возможна ли потеря данных (один процесс перезаписывает изменения другого)? Возможно ли искажение данных? (Например, каждый процесс добавляет одну строку за каждое добавление в файл журнала, возможно ли, что две строки будут искажены?) Если …

5
Понимание std :: atomic :: compare_exchange_weak () в C ++ 11
bool compare_exchange_weak (T& expected, T val, ..); compare_exchange_weak()является одним из примитивов сравнения-обмена, представленных в C ++ 11. Он слабый в том смысле, что возвращает false, даже если значение объекта равно expected. Это происходит из-за ложного сбоя на некоторых платформах, где для его реализации используется последовательность инструкций (вместо одной, как на …

4
Как достичь барьера StoreLoad в C ++ 11?
Я хочу написать переносимый код (Intel, ARM, PowerPC ...), который решает вариант классической задачи: Initially: X=Y=0 Thread A: X=1 if(!Y){ do something } Thread B: Y=1 if(!X){ do something } в которой цель состоит в том, чтобы избежать ситуации, в которой работают оба потокаsomething . (Хорошо, если ни одна из …

2
Инициализация вектора атомности
Рассматривать: void foo() { std::vector<std::atomic<int>> foo(10); ... } Содержимое foo теперь действительно? Или мне нужно явно выполнить цикл и инициализировать их? Я проверил на Godbolt, и, кажется, все в порядке, однако стандарт кажется очень запутанным в этом вопросе. Конструктор std :: vector говорит, что он вставляет вставленные по умолчанию экземпляры …
12 c++  vector  atomic 

2
Что гарантировано с C ++ std :: atomic на уровне программиста?
Я выслушал и прочитал несколько статей, выступлений и вопросов о стековом потоке std::atomicи хотел бы быть уверен, что хорошо это понял. Потому что я все еще немного запутался с видимостью записи строк кэша из-за возможных задержек в протоколах когерентности кэша MESI (или производных), буферах хранения, недействительных очередях и так далее. …

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.