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

Есть ли готовая к производству свободная от блокировки очередь или реализация хэша на С++
Я довольно много искал незаблокированную очередь в C++. Я нашел некоторый код и несколько испытаний, но ничего, что я смог скомпилировать. Хэш без блокировки также приветствуется. РЕЗЮМЕ: Пока у меня нет положительного ответа. Не существует...
51301 просмотров
schedule 31.03.2023

C: Библиотека выделения памяти без блокировки
У кого-нибудь есть хороший опыт работы с распределителем памяти без блокировки для C/С++? Я изучил boost и libcds, но не уверен, какую библиотеку использовать. Предыстория, я исследовал «Без блокировки, без ожидания, без блокировки, динамическое...
5423 просмотров
schedule 03.01.2024

C-код незаблокированной очереди
Как я могу реализовать этот псевдокод очереди без блокировки в C ? ENQUEUE(x) q ← new record q^.value ← x q^.next ← NULL repeat p ← tail succ ← COMPARE&SWAP(p^.next, NULL, q) if succ ≠ TRUE...
17030 просмотров
schedule 26.04.2022

Параллельный C++11 — какие наборы инструментов можно использовать?
Я активно использую <thread> <atomic> <mutex> и т. д. в своем коде, который включает в себя несколько алгоритмов без блокировок. Я ориентируюсь (в конечном итоге) на среду Linux. Я разрабатывал с помощью бета-версии Visual Studio...
844 просмотров

is boost::lockfree::queue не блокируется с С++ 11?
Я пытаюсь заменить boost::lockfree::queue на std::queue в этом примере websocket++ https://github.com/zaphoyd/websocketpp/blob/experimental/examples/broadcast_server/broadcast_server.cpp Похоже, это можно сделать, не меняя синтаксиса, но...
5652 просмотров
schedule 29.06.2022

Безопасно ли использовать boost::lockfree с библиотекой поддержки потоков С++ 11?
В настоящее время у меня есть код, написанный с использованием библиотеки поддержки потоков C++ 11: http://en.cppreference.com/w/cpp/thread Мне интересно, безопасно ли смешивать этот код с boost::lockfree....
330 просмотров
schedule 20.11.2022

Реалистичны ли данные о производительности стека без блокировки на http://tinyurl.com/pzpyvb9?
В конце http://blog.memsql.com/common-pitfalls-in-writing-lock-free-algorithms/ , Дэвид Столп показывает данные о производительности стека без блокировки, показывающие, что версия без блокировки работает медленнее, чем последовательная версия,...
201 просмотров

Атомарный shared_ptr для незаблокированного односвязного списка
Мне интересно, можно ли создать безблокирующий, потокобезопасный общий указатель для любой из «общих» архитектур, например x64 или ARMv7 / ARMv8. В своем выступлении о программировании без блокировки на cppcon2014 Херб Саттер представил...
4971 просмотров

Атомный системный вызов. Операции ввода/вывода
Я хотел бы написать многопоточный безопасный регистратор, используя очередь без блокировки. Потоки ведения журнала будут помещать сообщения в очередь, а регистратор будет извлекать их и отправлять на вывод. Думаю как решить этот вопрос- отправка на...
250 просмотров
schedule 23.10.2022

В каких случаях структуры данных без блокировок работают быстрее, чем основанные на блокировках?
Сейчас я читаю книгу C++ Concurrency in Action автора Энтони Уильямс , и существует несколько реализаций структур данных без блокировок. В начале главы о структурах данных без блокировок в книге Энтони пишет: Это подводит нас к еще одному...
4195 просмотров

Есть ли какой-либо барьер компилятора, равный asm(:::memory) в С++ 11?
Мой тестовый код показан ниже, и я обнаружил, что только memory_order_seq_cst запрещает переупорядочивать компилятор. #include <atomic> using namespace std; int A, B = 1; void func(void) { A = B + 1;...
1759 просмотров
schedule 03.02.2023

Многопоточное атомарное хранилище / загрузка нескольких значений в C ++
Предположим, у меня есть структура и класс на C ++: struct Vec { double x; double y; double z; } class VecTracker { Vec latest_vec; std::atomic<double> highest_x; std::atomic<double> highest_y;...
578 просмотров
schedule 07.02.2023

Если это не ошибка в boost::lockfree::detail::freelist, что мне здесь не хватает?
В этом файле класс boost::lockfree::detail::freelist используется для управления хранилищем безблокировочной структуры данных (например, очереди) с использованием свободного списка . Метод deallocate_impl используется для освобождения узлов...
140 просмотров
schedule 04.09.2023

недопустимая инициализация неконстантной ссылки типа «Node*&» из rvalue типа «std::atomic‹Node*›::__pointer_type {aka Node*}»
У меня есть следующий фрагмент кода: struct Node { int data; Node *next; }; atomic<Node*> head; atomic<Node*> temp1 = head.load(); .. Node *temp2 = new Node; //initialise values head.compare_exchange_strong(temp1, temp2);...
187 просмотров
schedule 20.08.2022

Могу ли я определить результат гонки данных, не читая значение?
Я пытаюсь лучше понять программирование без блокировки: Предположим, у нас есть два потока в гонке данных: // Thread 1 x = 1 // Thread 2 x = 2 Есть ли безблокировочный способ, которым третий поток может узнать результат гонки, не имея...
56 просмотров
schedule 09.07.2022

Неблокирующий кольцевой буфер Lockfree множественного производителя множественного потребителя с записью переменной длины
Я хочу передавать сообщения переменной длины от нескольких производителей нескольким потребителям с очередью с малой задержкой в ​​многосокетных системах Xeon E5. (Например, 400 байт с задержкой 300 нс было бы неплохо.) Я искал существующие...
1579 просмотров
schedule 28.04.2022

Безопасна ли эта вставка dlist без блокировки?
Мне нужно реализовать безблокировочную вставку подсписка в голову двусвязного списка. Этот список имеет фиктивный заголовок, поэтому каждый поток пытается вставить свою часть сразу после головного узла. Этот дизайн кажется мне приемлемым, однако у...
122 просмотров

Настольный теннис без замков в C11
Я новичок в параллелизме в C и пытаюсь кое-что понять, чтобы понять, как это работает. Я хотел написать соответствующую реализацию пинг-понга без блокировок, то есть один поток печатает ping , после этого другой поток печатает pong и делает его...
418 просмотров
schedule 30.03.2022

Почему очередь с несколькими производителями без ожидания в атомарном примере Boost не требует ожидания
У меня есть вопрос об очереди с несколькими производителями без ожидания в примере атомарного повышения. Я думаю, что «push» является только без блокировки, а не без ожидания, потому что есть цикл «compare_exchange_weak», тогда может быть конкретный...
88 просмотров
schedule 26.07.2023

ConcurrencyKit ck_fifo_mpmc_dequeue и освобождение памяти
Мне нужно использовать безблокировочную очередь с несколькими производителями и несколькими потребителями, и я пытаюсь использовать код ConcurrencyKit fifo_mpmc . Мне удалось заставить код работать на основе примера из код регрессии , за...
79 просмотров
schedule 04.06.2023