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

Как реализовать приоритетную блокировку только с помощью compare_and_swap?
Учитывая только сравнение и обмен, я знаю, как реализовать блокировку. Однако, как мне реализовать спин-блокировку 1) несколько потоков могут блокироваться на нем при попытке блокировки 2), а затем потоки разблокируются (и получают блокировку) в...
213 просмотров
schedule 12.10.2023

В Java какова производительность AtomicInteger compareAndSet() по сравнению с синхронизированным ключевым словом?
Я реализовал очередь экземпляров запросов FIFO (предварительно выделенные объекты запроса для скорости) и начал с использования ключевого слова «synchronized» в методе добавления. Метод был довольно коротким (проверить, есть ли место в буфере...
15872 просмотров
schedule 22.06.2022

Java сравнивает и меняет семантику и производительность
Какова семантика сравнения и обмена в Java? А именно, гарантирует ли метод сравнения и подкачки AtomicInteger только упорядоченный доступ между различными потоками к конкретной ячейке памяти атомарного целочисленного экземпляра, или он гарантирует...
11294 просмотров

как компилятор знает, что нельзя оптимизировать операторы изнутри блокировки/разблокировки? используя boost::spinlocks в С++
Класс с двумя перегруженными функциями operator() вызывается из отдельных потоков. См. //комментарии в коде ниже. Знает ли оптимизатор, что нельзя перемещать entryadd = mSpread * ENTRY_MULTIPLIER выше lock() ? struct Algo1 {...
409 просмотров

Подразумевает ли atomic_cmpxchg() барьеры памяти?
Следующие две цитаты кажутся противоречивыми: https://www.kernel.org/doc/Documentation/atomic_ops.txt int atomic_cmpxchg(atomic_t *v, int old, int new); Это выполняет атомарную операцию обмена сравнением атомарного значения v с...
1826 просмотров

атомарные записи и непостоянные чтения
Я разрабатываю многопоточный алгоритм, в котором требуется прочитать последнее значение общей переменной. Записи в переменную являются атомарными (с использованием метода сравнения и замены). Однако чтения не атомарны. Рассмотрим следующий...
877 просмотров

Compare-And-Swap не работает на многих ядрах
Когда я обнаружил инструкцию «CAS», я помню, что хорошо понимал, что она может работать для потоков, работающих на одном процессоре, но я был удивлен, что она может работать для многих процессоров. Вчера у меня появилась первая возможность...
156 просмотров

Как заставить сравнительный обмен принимать мои переменные?
Я пытаюсь смягчить условия гонки для простой функции прогнозирования в реализации библиотечного API (FUSE3), которую я не могу контролировать. Для этого я хочу использовать std::atomic<>::compare_exchange_weak как можно раньше в обратном...
199 просмотров
schedule 22.01.2023


Возникли проблемы с использованием функций атомарных операций numba (cuda.atomic.compare_and_swap)
Я пытаюсь использовать Numba для написания ядер cuda для своего кода. И каким-то образом я хочу использовать атомарную операцию в части своего кода, и я написал тестовое ядро, чтобы увидеть, как работает cuda.atomic.compare_and_swap. В документации...
382 просмотров
schedule 28.11.2023

почему Java Unsafe CAS (getAndAddInt) быстрее, чем код, написанный вручную
Я написал код cas (цикл while для compare_and_set) вручную вместо прямого вызова метода Unsafe.getAndAddInt . Но когда я использую jmh для проверки производительности, он показывает большую потерю производительности, хотя я написал тот же код, что...
246 просмотров

Минимум элементов подкачки в списке, чтобы он был таким же, как другой список, и подсчет подкачки в python
Я должен указать в качестве ввода a = [0,1,0,1] и b = [1,0,1,0] Примечание: элементы обоих списков будут только 0 и 1. Если невозможно сделать их одинаковыми с помощью обмена, я напечатаю -1. Если это то же самое в начале, я напечатаю 0, и если это...
57 просмотров
schedule 21.02.2022

Записывает ли cmpxchg строку кэша назначения в случае сбоя? Если нет, то лучше xchg для спинлока?
Я предполагаю простую спин-блокировку, которая не относится к ОС, ожидая целей этого вопроса. Я вижу, что простая спин-блокировка часто реализуется с использованием lock xchg или lock bts вместо lock cmpxchg . Но разве cmpxchg не избегает...
334 просмотров