Описание тега lockless

Операции без блокировки гарантируют одновременный доступ к структурам данных без использования обычных блокировок, которые обычно являются медленными операциями, такими как критические секции, мьютексы и т. Д. Операции без блокировки могут быть достигнуты, например, с помощью атомарных операций.
3 ответа

Приведение указателя к изменчивой пустоте ** в C++

У меня достаточно приличные навыки C++, но этот актерский состав вызывал у меня проблемы. У меня есть функция, которая принимает следующие параметры: (volatile void **, void * , void*), у меня 3 int* переменные, и я пытаюсь передать их как (&var…
1 ответ

Реализация concurrent_vector в соответствии с блогом Intel

Я пытаюсь реализовать потокобезопасный контейнер без блокировки, аналогичный std::vector, согласно этому https://software.intel.com/en-us/blogs/2008/07/24/tbbconcurrent_vector-secrets-of-memory-organization Из того, что я понял, чтобы предотвратить …
16 окт '17 в 01:48
2 ответа

Нарушение прав доступа в очереди без блокировки в многопоточном приложении

Я написал простую очередь без блокировки, основанную на принципах, изложенных в статье msdn ниже, а также на коде канала без блокировки DXUT, также ниже: http://msdn.microsoft.com/en-us/library/ee418650(v=vs.85).aspx http://code.google.com/p/bullet/…
07 авг '11 в 23:05
1 ответ

Идея реализации Lock Free stack - в настоящее время не работает

У меня возникла идея, которую я пытаюсь реализовать для стека без блокировки, который не использует подсчет ссылок для решения проблемы ABA, а также правильно обрабатывает восстановление памяти. По своей концепции он похож на RCU и опирается на две …
11 июн '18 в 17:54
5 ответов

Как построить очередь без блокировки?

Я провел сегодня, глядя в безблокировочные очереди. У меня есть несколько производителей, несколько потребителей ситуации. Для тестирования я реализовал систему, использующую Interlocked SList, под Win32, и она удвоила производительность моего много…
12 ноя '09 в 19:13
1 ответ

Заполнение строки кэша для переменных, кратных размеру строки кэша

Я создаю очень быстрый многопоточный фреймворк для моделирования дискретных событий. Ядро фреймворка использует методы атомарности и программирования без блокировки для достижения очень быстрого выполнения во многих потоках. Это требует от меня выра…
19 май '17 в 06:31
2 ответа

Locklock читатель / писатель

У меня есть некоторые данные, которые читаются и обновляются несколькими потоками. И чтение, и запись должны быть атомарными. Я думал сделать это так: // Values must be read and updated atomically struct SValues { double a; double b; double c; doubl…
29 июл '10 в 05:53
2 ответа

Любой способ поддерживать согласованность данных без использования блокировок?

Я пытаюсь реализовать кэш для данных, извлеченных из внешнего источника данных. Я пытаюсь выяснить, могу ли я избежать блокировок и использовать временные метки, чтобы устаревшие данные никогда не вставлялись в кэш. Есть ли механизм, уже разработанн…
1 ответ

SpinWait в обновлении без блокировки

Читая Потоки Албахари в C#, я заметил, что шаблон "Блокировка бесплатного обновления" использует SpinWait в конце цикла: static void LockFreeUpdate<T> (ref T field, Func <T, T> updateFunction) where T : class { var spinWait = new SpinWai…
13 июн '16 в 21:24
3 ответа

Гарантируется ли хеширование без блокировок без std::atomics поточно-ориентированным в C++11?

Рассмотрим следующую попытку создания хеш-таблицы без блокировки для многопоточных алгоритмов поиска (вдохновлено этой статьей) struct Data { uint64_t key; uint64_t value; }; struct HashEntry { uint64_t key_xor_value; uint64_t value; }; void insert_…
20 сен '12 в 07:16
2 ответа

Блокировка структуры данных Less Less Key

Мне нужна структура данных для хранения 500 тыс. Ключей, каждый со своими данными. 150 потоков будут работать одновременно и получать доступ к ключам. Один раз в день мне нужно обновить структуру данных, поскольку могут быть какие-то манипуляции, ск…
1 ответ

Если я не использую заборы, сколько времени понадобится ядру, чтобы увидеть записи другого ядра?

Я пытался найти в Google мой вопрос, но, честно говоря, не знаю, как кратко сформулировать вопрос. Предположим, у меня есть два потока в многоядерной системе Intel. Эти потоки работают на том же узле NUMA. Предположим, что поток 1 записывает в X оди…
7 ответов

Безблокировочные структуры данных C++, невозможно?

Я действительно не понимаю, как вы можете сделать некоторые структуры данных без блокировки. Например, если у вас есть связанный список, то вы либо окружаете операции мьютексами, ИЛИ вы можете получить условие гонки, если другой поток выполняется, п…
01 мар '14 в 20:50
0 ответов

Реализация связанного списка без блокировки

Я пытаюсь реализовать связанный список без блокировки в C и иметь его таким, чтобы вы могли создать несколько экземпляров связанного списка без блокировки, используя команду create Код следующий: typedef struct node_s node_t; struct node_s { node_t …
14 июн '18 в 18:17
3 ответа

Чрезмерное использование Interlocked.exchange?

Я пытаюсь понять правильное использование Interlocked.Exchange, поэтому я реализую простой отсортированный LinkedList с функцией добавления и удаления. Если бы это был не потокобезопасный список, очевидно, чтобы найти точку вставки, у вас было бы чт…
19 окт '12 в 17:31
2 ответа

В чем разница между без блокировки и без блокировки?

В некоторых статьях об алгоритме некоторые используют слово lockfreeи некоторые используют lockless, В чем разница между lockless а также lockfree? Спасибо! Обновить http://www.intel.com/content/dam/www/public/us/en/documents/guides/intel-dpdk-progr…
09 дек '13 в 09:30
2 ответа

Как реализовать tcp с нулевым копированием, используя циклический буфер без блокировки в C++

У меня есть несколько потоков, которые должны потреблять данные из потока TCP. Я хочу использовать кольцевой буфер / очередь в общей памяти для чтения из сокета TCP. Прием TCP будет записывать прямо в кольцевую очередь. Потребители будут читать из о…
02 июл '12 в 14:16
4 ответа

Блокировка Deque в Win32 C++

Я довольно новичок в структурах данных без блокировки, поэтому для упражнения я написал (что, как я надеюсь, функционирует как) ограниченную деку без блокировки (пока нет изменения размера, просто хочу, чтобы базовые случаи работали). Я просто хотел…
02 дек '09 в 19:05
3 ответа

Работает ли эта реализация для Lazy Singleton без блокировок Thread Safe в Java?

Это то, что я до сих пор, я иду в правильном направлении? Цель состоит в том, чтобы использовать это в сценариях, где одному потоку требуется доступ к синглтону чаще, чем другим потокам, поэтому желателен код без блокировки, я хотел бы использовать …
26 июн '14 в 18:36
1 ответ

Какой из них быстрее atomic_compare_and_swap или спин-трилок?

Ниже мой случай использования У меня есть одна глобальная переменная и несколько потоков через все процессоры обращаются к этому. С атомным сравнением и обменом auto old = global_var; auto new_var = old for (;;) { new++; bool got_it = atomic_compare…
21 янв '15 в 19:21