Вопросы по теме 'compare-and-swap'
Параллелизм Java: CAS против блокировки
Я читаю книгу Java Concurrency in Practice . В главе 15 речь идет о неблокирующих алгоритмах и методе сравнения и замены (CAS).
Написано, что CAS работают намного лучше, чем методы блокировки. Я хочу спросить людей, которые уже работали с...
28494 просмотров
schedule
09.09.2023
Сравнить и поменять местами C ++ 0x
Из предложения C ++ 0x об атомарных типах и операциях C ++:
29.1 Порядок и последовательность [atomics.order]
Добавьте новый подпункт со следующими абзацами.
Перечисление memory_order определяет подробный регулярный...
2843 просмотров
schedule
13.09.2023
в чем разница между gcc __sync_bool_compare_and_swap и cmpxchg?
чтобы использовать cas, gcc предоставляет некоторые полезные функции, такие как __sync_bool_compare_and_swap
но мы также можем использовать ассемблерный код, такой как cmpxchg
bool ret;
__asm__ __volatile__(
"lock cmpxchg16b %1;\n"...
5125 просмотров
schedule
30.01.2023
Атомное сравнение и обмен со структурой в Go
Я пытаюсь создать неблокирующий пакет очереди для параллельного приложения, используя алгоритм Магеда М. Майкла и Майкла Л. Скотта, как описано здесь .
Для этого требуется использование атомарного CompareAndSwap, который предлагается в пакете...
5953 просмотров
schedule
08.08.2022
Уместно ли использовать AtomicReference.compareAndSet для установки ссылки на результаты вызова базы данных?
Я реализую простой кеш с кешем, хранящимся как AtomicReference.
private AtomicReference<Map<String, String>> cacheData;
Объект кэша должен заполняться (лениво) из таблицы базы данных.
Я предоставляю метод для возврата данных...
5232 просмотров
schedule
13.05.2022
Создание CMPXCHG (без LOCK) в 64-битных сборках с использованием Visual C ++ (2010)
Мне нужны функции CAS для использования в контексте нескольких потоков, работающих на одном ЦП (предположим, что все потоки статически приклеены к выбранному ЦП через SetThreadAffinityMask ).
InterlockedCompareExchange генерирует LOCK CMPXCHG....
898 просмотров
schedule
12.06.2023
В каких ситуациях do-while может быть более эффективным, чем while?
Пока и делать-пока
Пока и do-while функционально эквивалентны, когда блоки пусты , хотя while кажется более естественным:
do {} while (keepLooping());
while (keepLooping()) {}
Одним из типичных случаев использования while/do-while с...
1713 просмотров
schedule
05.03.2024
Преимущества и недостатки программирования CAS
Может ли кто-нибудь рассказать мне о преимуществах и недостатках программирования Compare And Swap ? (например, производительность многоядерного процессора)
Здесь и пример на Java:
/**
* Atomically increments by one the current value.
*
*...
1689 просмотров
schedule
20.06.2023
Как атомарно изменять элементы структуры без использования блокировок в C?
Я хотел бы атомарно изменить некоторые элементы структуры. Моя текущая реализация использует мьютексы для защиты критического кода, и это можно увидеть ниже.
#include <stdio.h>
#include <stdlib.h>
#include <stdint.h>
#include...
154 просмотров
schedule
29.05.2022
Атомная переменная Java set() против compareAndSet()
Я хочу знать разницу между set() и compareAndSet() в атомарных классах. Обеспечивает ли метод set() атомарный процесс? Например, этот код:
public class sampleAtomic{
private static AtomicLong id = new AtomicLong(0);
public void...
10640 просмотров
schedule
02.02.2024
Почему операция «Сравнить и поменять местами» ограничена законом Амдала?
Мартин Томпсон утверждает, , что STM, который опирается на рефери, который опирается на CAS, в конечном итоге будет ограничен законом Амдала . закон Амдала состоит в том, что максимальная производительность параллельной программы ограничена...
139 просмотров
schedule
07.12.2022
Как работает сравнение и обмен
Я прочитал довольно много сообщений, в которых говорится, что сравнение и обмен гарантируют атомарность, однако я до сих пор не могу понять, как это делается. Вот общий псевдокод для сравнения и обмена:
int CAS(int *ptr,int oldvalue,int...
33928 просмотров
schedule
13.07.2022
Сборка Intel x86 для сравнения и сброса памяти
Возможно ли на процессоре Intel x86 сравнивать одно значение с другим в определенной ячейке памяти, сбрасывая память, если сравнение прошло успешно, не беспокоясь о проблемах многопоточности/процессора? Вижу инструкцию CMPXCHG - подойдет? Или есть...
741 просмотров
schedule
27.04.2022
Настроить функцию сравнения NSString?
Я хочу отсортировать массив строк, похожий на http://docs.oracle.com/javase/tutorial/i18n/text/rule.html в объекте C, я думаю, похоже на http://docs.oracle.com/javase/tutorial/i18n/text/rule.html Спасибо.
60 просмотров
schedule
21.12.2022
Как реализовать атомарное сравнение и обмен с помощью инструкции сборки cmpxchg8b в c?
Я пытаюсь реализовать связанный список без блокировки. Для этого мне нужно реализовать атомарную инструкцию сравнения и замены, используя встроенную сборку в C. Я знаю, что мне нужно использовать инструкцию cmpxchg8b для x86 , однако я не могу...
1568 просмотров
schedule
26.06.2023
порядок от самого высокого до самого низкого и изменения позиции из другого массива java
у меня есть два массива.,
один представляет собой целочисленный массив, а другой - массив строк. Здесь мне нужно упорядочить значения целочисленного массива для сортировки от самого высокого значения до самого низкого значения. в это время мне...
150 просмотров
schedule
13.04.2023
В Java 7 ConcurrentHashMap, почему при записи требуется блокировка сегмента? Почему мы не можем снова использовать Unsafe, чтобы ничего не блокировалось?
Проходя внутреннюю реализацию Java 7 ConcurrentHashMap, я заметил, что для установки нового сегмента мы используем класс Unsafe, который выполняет упорядоченную запись и использует алгоритм сравнения и обмена, таким образом поддерживая неблокирующее...
129 просмотров
schedule
26.02.2023
Cuda атомарность и условные переходы
Я пытаюсь написать CUDA версию кода serial как часть реализации периодического граничного условия в алгоритме молекулярной динамики. Идея состоит в том, что крошечную часть частиц, которые имеют нестандартные позиции, нужно вернуть обратно,...
200 просмотров
schedule
23.04.2022
memory_order_relaxed и атомарные операции RMW
В стандарте C ++ говорится, что операции RMW (чтение-изменение-запись) на атомике будут работать с последним значением атомарной переменной. Следовательно, использование memory_order_relaxed с этими операциями не повлияет на операцию RMW при...
563 просмотров
schedule
29.09.2022
Замена двух элементов в Python
Я смотрел видео, где внезапно инструктор использует данный код, чтобы поменять местами два элемента списка L:
L[suffix], L[i] = L[i], L[suffix]
Какова процедура, предпринятая внутри для этого метода свопа? Формируется ли новый список? Или...
212 просмотров
schedule
23.09.2022