Описание тега compare-and-swap
Сравнение и замена (сравнение и обмен) - это атомарная операция, которая записывает значение в ячейку памяти, только если его текущее значение равно заданному ожидаемому значению.
5
ответов
Сравните и поменяйте местами машинный код на C
Как бы вы написали функцию на C, которая выполняет атомарное сравнение и замену целочисленного значения, используя встроенный машинный код (предположим, скажем, архитектуру x86)? Может ли он быть более конкретным, если он написан только для процессо…
18 ноя '10 в 10:09
0
ответов
Как затраты на атомарные операции варьируются в зависимости от архитектуры?
Как соотносятся затраты на атомарные операции в обычных архитектурах (x86(версия), arm(версия) и PowerPC(версия))? Бонусные баллы, если вы включили исходную оценку циклов и объяснили ее в терминах "Сортировка памяти C11" или включили инструкции, исп…
27 июл '17 в 03:18
1
ответ
Как реализовать новый вид инструкции сравнения и обмена
Мне нужно реализовать (псевдокод) новый тип объекта сравнения и обмена (a,b) (CAS) (давайте назовем новый тип CAS2) . Объекты CAS и CAS2 поддерживают операцию чтения, которая возвращает значение объекта. Они оба поддерживают операцию сравнения и зам…
03 мар '13 в 19:12
3
ответа
Поменять строки ячеек из 2 столбцов данных
Я изо всех сил, чтобы поменять значения из 2 столбцов данных кадра следующим образом: rs649071 rs640249 0.265 0.49 rs647621 rs640249 0.227 0.34 rs644339 rs640249 0.116 0.08 rs641563 rs640249 1.0 33.96 rs640249 rs11073074 0.248 0.77 rs640249 rs116373…
28 сен '12 в 21:46
3
ответа
Приведение указателя к изменчивой пустоте ** в C++
У меня достаточно приличные навыки C++, но этот актерский состав вызывал у меня проблемы. У меня есть функция, которая принимает следующие параметры: (volatile void **, void * , void*), у меня 3 int* переменные, и я пытаюсь передать их как (&var…
12 дек '11 в 00:17
2
ответа
Это хороший дизайн для реализации Java синхронизированного ключевого слова в качестве объекта?
Просто для практики я хотел реализовать синхронизированное ключевое слово java как объект java. Вы сказали бы, что код ниже - хороший дизайн для этого? Я думаю, AtomicReference будет иметь аналогичную производительность для AtomicBoolean? Обновлен к…
06 окт '13 в 17:53
1
ответ
Замки против сравнения и обмена
Я читал о методах без блокировки, таких как Compare-and-swap и использование классов Interlocked и SpinWait для достижения синхронизации потоков без блокировки. Я провел несколько собственных тестов, где у меня просто есть множество потоков, пытающи…
18 окт '13 в 22:17
1
ответ
Атомная функция без блокировок для изменения двух независимых областей памяти
У меня есть следующая функция называется updateEntry который записывает значение в таблицу поиска. Я хотел бы создать многопоточную версию этой функции. Я смотрел в атомной операции __sync_bool_compare_and_swap но я не уверен, как правильно применят…
01 май '17 в 09:02
1
ответ
Is OSCompareAndSwap immune to ABA problem like CMPXCHG8B?
Является ли OSCompareAndSwap невосприимчивым к проблеме ABA, как CMPXCHG8B?
19 мар '10 в 12:01
1
ответ
Смешивание легких транзакций и обычных записей в Cassandra
Документация Datastax для облегченных состояний транзакций: "В облегченных транзакциях используется механизм отметки времени, отличный от обычных операций, и смешивание LWT и обычных операций может привести к ошибкам. Если для записи в строку внутри…
01 апр '16 в 14:46
3
ответа
СлабыйСравнить AndSwap и сравнить AndSwap
Этот вопрос не о разнице между ними - я знаю, что такое ложный сбой и почему он происходит на LL/SC. У меня вопрос: если я использую Intel x86 и использую Java-9 (сборка 149), почему существует разница между их ассемблерным кодом? public class WeakV…
29 дек '16 в 14:46
5
ответов
Порядок с наименьшего и изменения позиции от другого Java-Arraylist
У меня есть два arraylist., один - целочисленный массив, а другой - строковый массив. Здесь мне нужно упорядочить значения целочисленного массива для сортировки от максимального значения к минимальному. в это время мне нужно также переместить позици…
01 июл '16 в 08:58
1
ответ
Блокировка свободной реализации стека в Python
Можно ли реализовать стек без блокировки в Python? Я искал в Интернете и не нашел функцию CAS в Python.
07 сен '15 в 23:37
1
ответ
Назначение возвращаемого значения атомарной функции
Я пытаюсь реализовать функцию барьера, так что когда поток вызывает waitBarrier() это будет ждать, пока все остальные n Потоки вызвали функцию, после которой все будет продолжаться, то есть своего рода конструкция синхронизации. У меня есть следующи…
05 фев '14 в 19:01
1
ответ
Как понять этот механизм блокировки CCAS, используемый в АККА?
Я только что наткнулся на кусок кода в Акке. https://codereview.scala-lang.org/fisheye/browse/~raw,r=25521/scala-svn/scala/trunk/test/files/presentation/akka/src/akka/util/LockUtil.scala Основные методы, которые меня интересуют, перечислены ниже. /*…
05 сен '11 в 16:01
1
ответ
Как реализовать Valois' Queue с помощью C++11 CAS
Я хочу реализовать статью Дж. Д. Валуа " Реализация очередей без блокировки" с помощью атомарного CAS, предоставленного в C++11. Например, алгоритм Валуа определяет Enqueue функция: Enqueue(x) { q = new Record(); q->value = x; q->next = NULL; …
17 мар '18 в 03:19
1
ответ
Каким должен быть порядок памяти для последовательной загрузки атома, когда допустимы определенные ошибки
Предположим, что пользователь крутит ручку на MIDI-контроллере, и значения отправляются в мою программу в виде приращений и приращений к сохраненному значению. Поворот ручки в одну сторону пошлет серию уменьшений, их значение зависит от скорости вра…
30 янв '17 в 01:56
0
ответов
Реализация Mutex без аппаратной поддержки Test-and-Set и CAS-операций
Давайте получим следующее простое определение мьютекса: class Mutex { private: bool lock; public: void acquire(); void release(); Mutex() { lock = 0; } }; И следующее acquire() Реализация функции (с использованием операций сравнения и обмена): void …
22 окт '18 в 04:37
1
ответ
Атомарная инструкция: Как другой поток может обновить значение, когда выполняются инструкции сравнения и обмена?
Насколько я понимаю, любые атомарные инструкции (compare_and_swap, test_and_test, fetch_and_add) выполняются как одна инструкция. Хотя они включают в себя несколько циклов / операций ЦП, они невидимы для потока / процесса. Если поток выполняет любую…
27 апр '15 в 01:29
1
ответ
Как реализованы условные переменные?
Это сбило меня с толку надолго. Учитывая базовые атомарные примитивы, такие как сравнение и своп, я вижу, как реализовать спин-блокировку (из которой я могу создавать мьютексы). Тем не менее, я не понимаю, как я могу построить условные переменные из…
23 фев '10 в 05:14