Описание тега lockless
Операции без блокировки гарантируют одновременный доступ к структурам данных без использования обычных блокировок, которые обычно являются медленными операциями, такими как критические секции, мьютексы и т. Д. Операции без блокировки могут быть достигнуты, например, с помощью атомарных операций.
3
ответа
Приведение указателя к изменчивой пустоте ** в C++
У меня достаточно приличные навыки C++, но этот актерский состав вызывал у меня проблемы. У меня есть функция, которая принимает следующие параметры: (volatile void **, void * , void*), у меня 3 int* переменные, и я пытаюсь передать их как (&var…
12 дек '11 в 00:17
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
ответа
Любой способ поддерживать согласованность данных без использования блокировок?
Я пытаюсь реализовать кэш для данных, извлеченных из внешнего источника данных. Я пытаюсь выяснить, могу ли я избежать блокировок и использовать временные метки, чтобы устаревшие данные никогда не вставлялись в кэш. Есть ли механизм, уже разработанн…
06 ноя '13 в 15:00
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 потоков будут работать одновременно и получать доступ к ключам. Один раз в день мне нужно обновить структуру данных, поскольку могут быть какие-то манипуляции, ск…
15 июл '14 в 07:00
1
ответ
Если я не использую заборы, сколько времени понадобится ядру, чтобы увидеть записи другого ядра?
Я пытался найти в Google мой вопрос, но, честно говоря, не знаю, как кратко сформулировать вопрос. Предположим, у меня есть два потока в многоядерной системе Intel. Эти потоки работают на том же узле NUMA. Предположим, что поток 1 записывает в X оди…
11 июл '18 в 19:12
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