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

освобождение памяти без блокировки с помощью 64-битных указателей
Книга Херлихи и Шавита ( Искусство многопроцессорного программирования ) решение по высвобождению памяти использует Java AtomicStampedReference<T>; . Чтобы написать один на C++ для x86_64, я думаю, требуется по крайней мере 12-байтовая...
4337 просмотров
schedule 07.08.2023

В чем разница между безблокировкой и неблокировкой?
В контексте синхронизации структур данных может ли кто-нибудь прояснить разницу между «без блокировки» и «неблокирующим»? Эти термины, кажется, используются многими людьми взаимозаменяемо, но я пока не уверен, не скрыто ли где-то какое-то тонкое...
2159 просмотров

Поточно-безопасная очередь без блокировки - нужен совет
Мне нужно разработать потокобезопасный регистратор. Мой регистратор должен иметь метод Log(), который просто ставит в очередь текст для регистрации. Также регистратор должен быть без блокировки, чтобы другие потоки могли регистрировать сообщения, не...
3712 просмотров
schedule 27.08.2022

Фобер и др. Очередь FIFO без блокировок: несколько потребителей и производителей?
Мне было интересно, представлена ​​ли очередь fifo, представленная в статье Фобера и др. http://nedko.arnaudov.name/soft/L17_Fober.pdf был множественным потребителем и производил очередь FIFO. Если нет, то какая очередь FIFO с несколькими...
1323 просмотров
schedule 21.09.2022

Средняя задержка инструкций atomics cmpxchg на процессорах Intel
Я ищу справку о средней задержке для инструкции блокировки cmpxchg для различных процессоров Intel. Я не могу найти хорошую ссылку по теме, и любая ссылка очень поможет. Спасибо.
4305 просмотров
schedule 28.12.2023

Бесплатная блокировка и потокобезопасный IList ‹T› для .NET
Есть ли структура данных без блокировок и потокобезопасность, реализующая IList? Естественно, под безблокировкой я подразумеваю реализацию, которая не использует блокирующие примитивы в .NET, а скорее использует заблокированные операции / атомарные...
4285 просмотров

Существует ли реализация вектора без блокировки?
Первый результат в Google для «вектора без блокировки» - это исследовательская статья, написанная в соавторстве с Дамианом Дечевым, Питером Пиркельбауэром и Бьярном Страуструпом, описывающая теоретический вектор без блокировки. Был ли реализован этот...
5430 просмотров

Атомное чтение 16 байт на процессорах x64
Мне нужно прочитать/записать 16 байт атомарно. Я пишу только с помощью cmpxchg16, который доступен на всех процессорах x64, кроме, я думаю, одного малоизвестного AMD. Теперь вопрос заключается в том, что для выровненных 16-байтовых значений,...
3635 просмотров
schedule 29.04.2023

Как использовать valgrind со структурами данных без блокировки?
Я экспериментирую со структурами без блокировок в библиотеке liblfds (http://www.liblfds.org/) с прицелом на их использование в цепочке инструментов, которая также включает valgrind для различных проверок ошибок, что вызывает у меня некоторые...
555 просмотров
schedule 18.12.2022

Можно ли реализовать карту без блокировки в C++
Мы разрабатываем сетевое приложение на основе C/S, мы обнаруживаем, что в std::map добавлено слишком много блокировок, что снижает производительность сервера. Интересно, можно ли реализовать карту без блокировки, если да, то как? Есть ли там...
17715 просмотров
schedule 02.03.2023

Смешивание систем возможной согласованности и устаревших систем ACID
Существуют ли какие-либо шаблоны для смешивания систем конечной согласованности с устаревшими системами ACID? Я хочу хранить данные в некоторых (как минимум двух) устаревших системах на мейнфрейме, которым нужны ACID-подобные транзакции. Эти базы...
259 просмотров

Реализация структуры данных без блокировок на диске
У меня есть интересная задача для тех, кто имеет большой опыт работы со структурами данных без блокировок и структурами данных на основе дисков. Я ищу способ построить на С++ структуру данных для хранения различного количества объектов....
867 просмотров

Delphi [volatile] и InterlockedCompareExchange ненадежны?
Я написал простой стек узлов без блокировки (Delp[hi XE4, Win7-64, 32-разрядное приложение), в котором я могу иметь несколько «стеков» и одновременно извлекать/проталкивать узлы между ними из разных потоков. Он работает в 99,999% случаев, но в...
1684 просмотров

Аппаратная транзакционная память Intel TSX, что видят нетранзакционные потоки?
Предположим, у вас есть два потока, один из которых создает транзакцию TSX и изменяет некоторую структуру данных. Другой поток не выполняет никакой синхронизации и читает ту же структуру данных. Является ли транзакция атомарной для него? На самом...
525 просмотров

Один вектор с несколькими итераторами в многопоточном приложении без блокировки
У меня есть следующие функции в приложении С++: Существует один предварительно выделенный std::vector фиксированной длины 1-й поток выполняет поиск по вектору (просто поиск элементов, соответствующих некоторому шаблону) 2-й поток иногда...
422 просмотров
schedule 24.07.2022

Обеспечение использования инструкции двойного сравнения и замены для стека без блокировки?
(Предположим, что 64-разрядная архитектура x86-64 и процессор Intel 3-го / 4-го поколения) Вот реализация стека без блокировки из книги «Параллелизм в действии», стр. 202: template<typename T> class lock_free_stack { private: struct...
2771 просмотров
schedule 12.06.2022

Надежный способ убедиться, что канал Go не блокируется
Я ищу надежный способ убедиться, что пустой канал в Go не блокирует мое выполнение. Мне приходится перебирать несколько каналов в определенном порядке (вид приоритетов), и как только я нахожу один из них с элементами, читаю его. В настоящее время...
91 просмотров
schedule 05.09.2023

Неблокирующий алгоритм для изменения List‹V› в Java
Вариант использования требует, чтобы я не блокировал ни один поток при извлечении или помещении значений в List<V> . Я просматривал алгоритмы сравнения и замены , которые требуют от вас реализации структуру данных самостоятельно. Я хотел бы...
123 просмотров

InterlockedCompareExchange - каковы точные требования к выравниванию и как их можно обеспечить?
Мне сложно понять значение документации MSDN для Семейство функций Interlocked Variable Access . Я использую InterlockedExchange для настройки и InterlockedCompareExchange для получения переменной-члена, которая используется несколькими...
1074 просмотров

Объясните Майклу и Скотту алгоритм безблокировочной очереди
Я изучаю алгоритм очереди без блокировки Майкла и Скотта и пытаюсь реализовать его на С++. Но я создал гонку в своем коде и думаю, что в алгоритме может быть гонка. Я прочитал статью здесь: Простой, быстрый и практичный неблокирующий и...
5533 просмотров