Описание тега aba
Проблема ABA относится к ситуации, когда переменная изменяется с A на B, а затем снова обратно на A. Таким образом, для другого потока невозможно обнаружить, что переменная действительно была изменена.
2
ответа
ABA с программным обеспечением Clojure Transactional Memory
Мне было интересно, есть ли у Clojure встроенное решение проблемы ABA. Я создавал пример, который показывает эту проблему, но каким-то образом Clojure обнаруживает изменения. Это потому, что транзакции Clojure сравнивают ссылки, а не значения? Мой п…
10 май '17 в 13:33
1
ответ
Идея реализации Lock Free stack - в настоящее время не работает
У меня возникла идея, которую я пытаюсь реализовать для стека без блокировки, который не использует подсчет ссылок для решения проблемы ABA, а также правильно обрабатывает восстановление памяти. По своей концепции он похож на RCU и опирается на две …
11 июн '18 в 17:54
1
ответ
Является ли этот пример указателя опасности ошибочным из-за проблемы ABA?
В книге C++ Concurrency in Action автор привел пример использования указателя опасности для реализации структуры данных стека без блокировки. Часть кода выглядит следующим образом: std::shared_ptr<T> pop() { std::atomic<void*>& hp=ge…
14 фев '18 в 09:26
1
ответ
Почему автоматическая сборка мусора устраняет проблемы ABA?
Я исследовал проблему ABA в Concurrency в книге практики, в Википедии, и я прочитал следующий пост Как я понимаю, основная причина проблемы ABA заключается в том, что в алгоритме мы проверяем это состояние так же, как и раньше, но алгоритм подразуме…
17 мар '17 в 09:46
0
ответов
Решить проблему параллелизма ABA, используя C++ до 20
На CppCon 2014 Херб Саттер описал изящное решение проблемы ABA с использованием атомарного общего ptr. Краткое описание этого решения можно найти в нижней части этой статьи. Однако частичная специализация atomic на shared_ptr это особенность входяще…
12 фев '18 в 13:41
1
ответ
Условие гонки ABA
Меня беспокоят вложенные указатели и доступ, в частности, есть ли способ избежать этой проблемы ABA при работе с древовидной структурой на основе узлов без блокировки. Меня беспокоит следующее: Предоставляет ли стандарт гарантии по этому поводу и яв…
27 май '20 в 13:08
2
ответа
Есть ли что-нибудь вроде AtomicStampedReference Java в C++?
Я изучаю безблокировочную структуру, и я заметил проблему ABA. Я думаю, что Java AtomicStampedReference может решить эту проблему. Итак, есть ли что-нибудь подобное в C++, которое может решить эту проблему?
09 дек '19 в 05:44
2
ответа
Подходит ли ABA для операций вставки / вставки при использовании идиомы CAS?
Следующий псевдокод взят из http://15418.courses.cs.cmu.edu/spring2013/article/46. while (1) { n->next = p->next; Node *old_next = p->next; if (compare_and_swap(&p->next, old_next, n) == old_next) return; } Это pushоперация для стека…
20 авг '20 в 08:37
0
ответов
Есть ли скрытые опасности ABA в CAS
Когда я узнал из Глубокое понимание JVM, даже если произошло ABA, как цифровое вычитание , Операция со строкой я думаю, что это не влияет на результаты операции Если переменная V сначала считывается со значением A, и когда она назначается, проверяет…
22 фев '21 в 04:27
0
ответов
Откройте файл VBA для извлечения данных, если не можете спросить, из какого файла извлекать данные
Я пытаюсь заставить его извлекать данные из отдельного файла, и все работает нормально. когда я пытаюсь заставить его спросить, какой файл, если он не может автоматически найти тьфу, когда я сталкиваюсь с проблемами. (я не могу заставить его сказать…
08 мар '22 в 20:54
1
ответ
Управление отменой асинхронной задачи
Я использую Web Speech API для чтения массива слов с небольшой задержкой между каждым (орфографический тест для моего сына!). Я определил асинхронную функцию для произнесения одного слова и использовалsetTimeout()задержать следующее слово на 5 секун…
26 фев '23 в 20:26
0
ответов
Я построил стек с помощью CAS. Является ли он потокобезопасным?
Я использую std::atomic для создания стека, использующего CAS.Чтобы решить проблему ABA, я использовал помеченный указатель.Код показан ниже. template <typename T> union tagged_ptr { struct { std::uint64_t tag : 12, ptr : 52; }; std::uint64_t …
03 май '23 в 08:04