Вопросы по теме '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 просмотров
schedule
30.01.2024
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 просмотров
schedule
10.04.2022
Атомарный shared_ptr для незаблокированного односвязного списка
Мне интересно, можно ли создать безблокирующий, потокобезопасный общий указатель для любой из «общих» архитектур, например x64 или ARMv7 / ARMv8.
В своем выступлении о программировании без блокировки на cppcon2014 Херб Саттер представил...
4971 просмотров
schedule
23.02.2023
Атомный системный вызов. Операции ввода/вывода
Я хотел бы написать многопоточный безопасный регистратор, используя очередь без блокировки. Потоки ведения журнала будут помещать сообщения в очередь, а регистратор будет извлекать их и отправлять на вывод. Думаю как решить этот вопрос- отправка на...
250 просмотров
schedule
23.10.2022
В каких случаях структуры данных без блокировок работают быстрее, чем основанные на блокировках?
Сейчас я читаю книгу C++ Concurrency in Action автора Энтони Уильямс , и существует несколько реализаций структур данных без блокировок. В начале главы о структурах данных без блокировок в книге Энтони пишет:
Это подводит нас к еще одному...
4195 просмотров
schedule
09.03.2023
Есть ли какой-либо барьер компилятора, равный 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 просмотров
schedule
16.08.2022
Настольный теннис без замков в 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