Вопросы с тегом 'compare-and-swap'

Сравнение и обмен (сравнение и обмен) - это атомная операция, которая записывает значение в ячейку памяти, только если ее текущее значение равно заданному ожидаемому значению.
5 отв.

Java Concurrency: CAS против блокировки

Я читаю книгу Java Concurrency на практике. В главе 15 речь идет о неблокирующих алгоритмах и методе сравнения и свопинга (CAS). Написано, что CAS работает намного лучше, чем методы блокировки. Я хочу спросить людей, которые уже работали с обоими...
19 апр. '10 в 1:07
2 отв.

С++ 11 упорядочение атомной памяти - это правильное использование упорядоченного (освобождения-потребления) заказа?

Недавно я сделал порт для С++ 11, используя std:: atomic тройного буфера, который будет использоваться в качестве механизма синхронизации concurrency. Идея этого подхода синхронизации потоков заключается в том, что для ситуации с производителем-потр...
04 марта '13 в 18:03
3 отв.

Семантика сравнения и смены языка Java и производительность

Что такое семантика сравнения и свопинга в Java? А именно, метод сравнения и свопинга AtomicInteger просто гарантирует упорядоченный доступ между различными потоками к конкретному местоположению памяти экземпляра атомного целого или гарантирует упор...
15 нояб. '10 в 12:55
2 отв.

С++ 11. синхронизируется с std:: mutex медленнее, чем с std:: atomic (memory_order_seq_cst)?

Основная причина использования атомистики над мьютексами - это то, что мьютексы дороги. но с моделью памяти по умолчанию для atomics, являющейся memory_order_seq_cst, разве это не так дорого? Вопрос: может ли одновременная программа с использованием...
30 апр. '13 в 23:20
2 отв.

Haskell: Как работает "atomicModifyIORef"?

Может кто-нибудь объяснить, как работает atomicModifyIORef? В частности: (1) Дождаться блокировки или оптимистично попытаться повторить попытку, если есть конкуренция (например, TVar). (2) Почему подпись atomicModifyIORef отличается от подписи modi...
11 апр. '12 в 12:01
4 отв.

В Java, какова производительность AtomicInteger compareAndSet() по сравнению с синхронизированным ключевым словом?

Я реализовал очередь экземпляров запросов FIFO (предварительно назначенные объекты запроса для скорости) и начал с использования "синхронизированного" ключевого слова в методе добавления. Метод был довольно коротким (проверьте, есть ли место в буфере...
24 авг. '10 в 15:14
3 отв.

Атомно увеличивайте два целых числа с помощью CAS

По-видимому, можно атомарно увеличивать два целых числа с помощью команд сравнения и свопинга. Этот разговор утверждает, что такой алгоритм существует, но он не детализирует, как он выглядит. Как это можно сделать? (Обратите внимание, что очевид...
12 окт. '15 в 17:07
1 отв.

Сравнение и обмен С++ 0x

Из Предложение С++ 0x в С++ Atomic Types и Operations: 29.1 Порядок и последовательность [atomics.order] Добавьте новый подканал со следующими параграфами. Перечисление memory_order указывает подробный порядок регулярной (неатомарной) синхронизаци...
18 нояб. '10 в 12:54
2 отв.

Что такое Compare And Swap?

Недавно я читал об Compare and Swap атомарном действии (CMPXCHG,.NET Interlocked.CompareExchange, что угодно). Я понимаю, как он работает внутри, и как он используется от клиента. Что я не могу понять, когда кто-то использует CAS? Википедия говори...
24 апр. '12 в 11:19
1 отв.

Реальные примеры для ABA в многопоточности

Я ищу интересные примеры ABA-проблемы, вызывающие проблемы с многопоточным кодом. Проблема ABA возникает в параллельном коде при выполнении атомной команды сравнения и замены. Если поток прерывается непосредственно перед выполнением сравнения и своп...
26 янв. '13 в 13:17
2 отв.

Почему С++ 11 CAS выполняет два параметра указателя?

Многие из операций CAS 11 CAS (например, atomic_compare_exchange_weak, atomic_compare_exchange_strong) принимают два указателя и значение, то есть следующее: bool atomic_compare_exchange(T* pointer, T* expected, // pseudodeclaration! ...
16 апр. '13 в 20:50
5 отв.

Сравните и замените машинный код на C

Как бы вы могли написать функцию в C, которая выполняет атомное сравнение и свопинг по целочисленному значению, используя встроенный машинный код (предполагая, скажем, архитектуру x86)? Может ли быть более конкретным, если он написан только для проце...
18 нояб. '10 в 13:09
2 отв.

Как ждать/уведомлять работу на уровне JVM?

Подождите и сообщите, как сообщения, передаваемые между потоками, если это правда, должны быть очереди для буферизации этих сообщений. Если да, то должны быть атомарные операции для добавления сообщений и удаления сообщения из очереди, также должен б...
08 окт. '13 в 15:25
3 отв.

weakCompareAndSwap против сравнения с обменом

Этот вопрос касается не разницы между ними - я знаю, что такое ложный отказ и почему это происходит на LL/SC. Мой вопрос: если я нахожусь на Intel x86 и используя java-9 (сборка 149), почему существует разница между их ассемблерным кодом? public cla...
29 дек. '17 в 17:46
1 отв.

Когда следует использовать std:: atomic_compare_exchange_strong?

В С++ 11 есть две атомарные операции CAS: atomic_compare_exchange_weak и atomic_compare_exchange_strong. Согласно cppreference: Слабые формы функций допускают ошибочно ошибочно, что действует, как будто * obj!= * ожидается, даже если они равны. К...
29 июля '13 в 4:05