Вопросы по теме 'lock-free'

Список без блокировки поможет!
Привет, я пытаюсь написать список без блокировки, у меня работает добавление, но код, который извлекает объекты из списка, работает не очень хорошо :( Ну, это не обычный список. У меня есть интерфейс IWorkItem. interface IWorkItem {...
1686 просмотров
schedule 23.11.2023

Заблокировать несколько читателей, один писатель
У меня есть структура данных в памяти, которая читается несколькими потоками и записывается только одним потоком. В настоящее время я использую критическую секцию, чтобы сделать этот доступ потокобезопасным. К сожалению, это блокирует читателей,...
5811 просмотров
schedule 03.07.2022

Работают ли атомарные операции в процессах так же, как и в потоках?
Очевидно, атомарные операции гарантируют, что разные потоки не затирают значение. Но верно ли это для процессов при использовании разделяемой памяти? Даже если процессы запланированы операционной системой для запуска на разных ядрах? Или на разных...
1151 просмотров

Неявные барьеры памяти
скажем, у меня есть переменные A, B и C, которые разделяют два потока (T1, T2). у меня есть следующий код: //T1 //~~ A = 1; B = 1; C = 1; InterlockedExchange(ref Foo, 1); //T2 (executes AFTER T1 calls InterlockedExchange)...
196 просмотров
schedule 13.01.2023

Библиотека Boost или эквивалентная реализация С++ 0x atomic для очереди без блокировки Саттера?
Статья Херба Саттера о незаблокированных и параллельных очередях довольно часто упоминалась здесь, в SO. Однако у меня нет компилятора С++ 0x ... поэтому мне интересно, перевел ли кто-нибудь свой код для использования какой-либо библиотеки повышения...
683 просмотров
schedule 06.06.2023

Действительно ли алгоритмы без блокировок работают лучше, чем их аналоги с полными блокировками?
Раймонд Чен занимался огромный серия в lockfree алгоритмы . Помимо простых случаев функций InterlockedXxx , кажется, что преобладающий шаблон для всех них заключается в том, что они реализуют свои собственные блокировки . Конечно,...
11975 просмотров

заблокировать свободную очередь, поставить в очередь, если она не пуста
Я реализовал очередь без блокировок в C, используя сравнение и замену на основе http://www.boyet.com/articles/LockfreeQueue.html . Он отлично работает, но я пытаюсь интегрировать эту очередь в список пропуска без блокировки, который я реализовал....
991 просмотров
schedule 17.04.2022

Управление памятью в очереди без блокировок
Мы пытались использовать в нашем коде очередь без блокировок, чтобы уменьшить конфликт блокировок между одним производителем и потребителем в нашей текущей реализации. Существует множество реализаций очередей, но я не слишком ясно понял, как лучше...
2260 просмотров
schedule 13.04.2022

boost lockfree использовать определяемый пользователем тип
Я попытался использовать библиотеку boost lockfree. Однако возникает ошибка invalid application of ‘sizeof’ to incomplete type ‘boost::STATIC_ASSERTION_FAILURE<false>’ , когда я устанавливаю для параметра шаблона тип, определяемый...
822 просмотров
schedule 19.07.2023

Как реализовать решение ABA?
Я пытаюсь реализовать очередь FIFO Майкла-Скотта из здесь . Я не могу реализовать их решение проблемы ABA. Я получаю эту ошибку. error: incompatible type for argument 1 of '__sync_val_compare_and_swap' Для справки, я использую Linux для...
674 просмотров
schedule 25.08.2023

простая потоковая реализация и быстрая реализация пула памяти?
После переосмысления дизайна и некоторого вклада от Пэдди я придумал что-то вроде этого, но мне интересно, правильно ли это, когда я запускаю его, кажется, что все в порядке... Идея состоит в том, что предварительно распределенные объекты наследуются...
4875 просмотров
schedule 11.04.2023

Возможен ли фрагментированный кольцевой буфер без блокировки с несколькими считывателями/писателями (MPMC)?
Для моего текущего проекта я хочу реализовать или (лучше повторно использовать) Ограниченный фрагментированный кольцевой буфер для пакетов переменного размера. Каждый читатель должен поддерживать свой собственный указатель чтения; это...
867 просмотров
schedule 30.03.2024

почему объект результата в FutureTask является энергонезависимым?
Я прочитал класс FutureTask в jsr166, обнаружил, что объект результата является энергонезависимым, комментарии в коде являются «энергонезависимыми, защищенными чтением/записью состояния», строка 75, состояние является изменчивым int. Я прочитал...
439 просмотров
schedule 17.02.2024

предотвращение столкновений при сворачивании бесконечного буфера без блокировки в циклический буфер
Я решаю проблему арбитража двух каналов по протоколу FAST . Пожалуйста, не беспокойтесь, если вы не знакомы с этим, мой вопрос на самом деле довольно общий. Но добавляю описание проблемы для интересующихся (можете пропустить). Данные во всех...
265 просмотров
schedule 30.10.2022

Преимущества и недостатки программирования CAS
Может ли кто-нибудь рассказать мне о преимуществах и недостатках программирования Compare And Swap ? (например, производительность многоядерного процессора) Здесь и пример на Java: /** * Atomically increments by one the current value. * *...
1689 просмотров

Как реализовать двойное сравнение и обмен в C/Linux?
Я читал статью "Простые, быстрые и практичные алгоритмы неблокирующих и блокирующих параллельных очередей" и я понял, что они предполагают, что компьютер реализует следующий псевдокод атомарно: CAS(Q->Tail,tail,<next.ptr,next.count+1>)...
2116 просмотров
schedule 06.04.2023

boost::lockfree::queue пример допустимой структуры данных?
У boost::lockfree::queue есть некоторые требования к структуре данных для постановки в очередь. тривиальный конструктор копирования тривиальное задание тривиальный деструктор Пожалуйста, приведите пример такого класса
984 просмотров
schedule 15.11.2022

В чем разница между lockless и lockfree?
В некоторых статьях об алгоритмах некоторые используют слово lockfree , а некоторые — lockless . В чем разница между lockless и lockfree ? Спасибо! Обновить...
8301 просмотров
schedule 08.10.2022

Блокировка свободного программирования - С++ атомарная
Я пытаюсь разработать следующий код без блокировки (С++ 11): int val_max; std::array<std::atomic<int>, 255> vector; if (vector[i] > val_max) { val_max =vector[i]; } Проблема в том, что при большом количестве...
626 просмотров
schedule 31.05.2023

Где ошибка в очереди блокировки?
Я написал реализацию очереди без блокировки Java. У него есть ошибка параллелизма. Я не могу найти это. Этот код не важен. Я просто беспокоюсь о том, что не могу объяснить наблюдаемое поведение, связанное с изменчивыми переменными. Баг виден по...
151 просмотров
schedule 23.09.2022