Запитання з тегом «atomic»

Атомна операція нероздільна. Цей термін використовується для опису транзакцій у базах даних, доступу низького рівня в багатопотокових програмах та операцій з файловою системою.


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 counter++; …

6
Що означає "атомний" в програмуванні?
У книзі "Ефективна Java" зазначено: Специфікація мови гарантує, що читання або запис змінної є атомним, якщо змінна не є типом longабо double[JLS, 17.4.7]. Що означає "атомний" в контексті програмування Java, або програмування взагалі?
276 java  atomic 


3
Що саме є std :: atomic?
Я розумію, що std::atomic<>це атомний об’єкт. Але атомний в якій мірі? Наскільки я розумію, операція може бути атомною. Що саме мається на увазі, роблячи об’єкт атомним? Наприклад, якщо одночасно є два потоки, виконуючи такий код: a = a + 12; Тоді ціла операція (скажімо add_twelve_to(int)) атомна? Або вносяться зміни в …

13
Чи може num ++ бути атомним для 'int num'?
Загалом, для int num, num++(або ++num), в якості операції читання-модифікація-запис, це НЕ атомна . Але я часто бачу компілятори, наприклад GCC , генерують такий код для нього ( спробуйте тут ): Оскільки рядок 5, якому відповідає num++одна інструкція, чи можна зробити висновок про те, що в даному випадку num++ є …

8
Чи безпечна нитка! = Перевірити?
Я знаю, що такі складні операції, як, наприклад i++, не є безпечними для потоків, оскільки вони включають кілька операцій. Але чи перевірка посилання на себе є потоком безпечної роботи? a != a //is this thread-safe Я спробував це запрограмувати і використовувати кілька потоків, але це не вийшло з ладу. Я …

5
Коли використовувати леткі з багатопоточною різьбою?
Якщо є два потоки, що мають доступ до глобальної змінної, то багато підручників кажуть, що робить цю змінну мінливою, щоб запобігти компілятору кешувати змінну в регістрі, і, таким чином, вона не оновлюється правильно. Однак два потоки, що мають доступ до спільної змінної, - це те, що вимагає захисту за допомогою …

6
AtomicInteger lazySet vs. set
У чому різниця між методами lazySetта setметодами AtomicInteger? Документація не багато говорити про lazySet: Врешті-решт встановлюється задане значення. Здається, що збережене значення не буде відразу встановлено на потрібне значення, а замість цього буде заплановано встановити деякий час у майбутньому. Але, яке практичне використання цього методу? Будь-який приклад?
116 java  concurrency  atomic 


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

3
вартість атомної експлуатації
Яка вартість атомної операції (будь-яке порівняння та обмін або атомне додавання / зменшення)? Скільки циклів він споживає? Це призупинить інші процесори на SMP або NUMA, або заблокує доступ до пам'яті? Чи буде він змивати буфер переупорядкування в непрацюючому ЦП? Які наслідки матимуть на кеш-пам’яті? Мене цікавлять сучасні, популярні процесори: x86, …

5
Розуміння std :: atomic :: compare_exchange_weak () у C ++ 11
bool compare_exchange_weak (T& expected, T val, ..); compare_exchange_weak()є одним із примітивів порівняння-обміну, представлених у C ++ 11. Він слабкий у тому сенсі, що повертає false, навіть якщо значення об'єкта дорівнює expected. Це пов’язано з помилковим збоєм на деяких платформах, де для його реалізації використовується послідовність інструкцій (замість однієї, як на …

10
Django: Як я можу захистити від одночасної модифікації записів бази даних
Якщо існує спосіб захисту від одночасних модифікацій однієї і тієї ж бази даних двома або більше користувачами? Було б прийнятно показувати повідомлення про помилку користувачеві, який виконує другу операцію фіксації / збереження, але дані не повинні перезаписуватися мовчки. Я думаю, що блокування входу не є можливим, оскільки користувач може скористатися …

7
Що є більш ефективним, базовим блокуванням мьютексу чи атомним цілим числом?
Для чогось простого, як лічильник, якщо кількість потоків буде збільшувати кількість. Я читав, що блокування mutex може знизити ефективність, оскільки потоки повинні чекати. Отже, для мене атомний лічильник був би найефективнішим, але я читав, що зсередини це в основному замок? Тож, мабуть, мене бентежить, як будь-який може бути ефективнішим за …

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.