C: Библиотека выделения памяти без блокировки

У кого-нибудь есть хороший опыт работы с распределителем памяти без блокировки для C/С++?

Я изучил boost и libcds, но не уверен, какую библиотеку использовать.

Предыстория, я исследовал «Без блокировки, без ожидания, без блокировки, динамическое идеальное хеширование, расширяемую, параллельную хеш-таблицу» * Да, я знаю, что это звучит претенциозно, но это то, как это называется.

В любом случае, я готов начать многопоточное тестирование, и мне нужно найти лучший способ настроить распределение памяти при добавлении новых узлов. (и когда мне нужно выделить массивы указателей)

Так есть ли у кого-нибудь хороший опыт с выделением памяти без блокировки?


person Steven Feldman    schedule 25.03.2011    source источник
comment
Разве «свободное ожидание» не означает «без блокировки», «без блокировки» не подразумевает неблокировку, а «неблокировка» не подразумевает одновременную работу? Немного избыточно...   -  person GManNickG    schedule 25.03.2011
comment
Я знаю, но мой профессор-исследователь любит нажимать на все ключевые слова.   -  person Steven Feldman    schedule 25.03.2011
comment
Вы пропустили поддержку NUMA в списке пожеланий. Все основные реализации распределителя не будут работать на оборудовании NUMA, если вы также хотите параллелизма.   -  person Steve-o    schedule 25.03.2011
comment
Голосование за закрытие в качестве инструмента рек.   -  person Ciro Santilli 新疆再教育营六四事件ۍ    schedule 25.06.2015


Ответы (3)


Красивые графики показывают, что эта реализация хороша:

http://locklessinc.com/

Это GPL 3.0 с открытым исходным кодом с 14 ноября 2011 года :)

person Steve-o    schedule 25.03.2011
comment
Они разместили там код для тестирования производительности, и это приятно, потому что я хотел найти лучший инструмент для измерения времени, чем стандартный time.h. - person Steven Feldman; 25.03.2011
comment
@Feldman, на диаграммах вы можете видеть альтернативы: tcmalloc от Google, урожденная jemalloc, и распределитель glibc по умолчанию, который невероятно хорош в наши дни. - person Steve-o; 25.03.2011
comment
И снова Хоард эффектно терпит неудачу. Я видел, что это рекомендовалось уже несколько раз, но каждый тест, который я встречал, ставил jemalloc и tcmalloc далеко впереди. - person Matthieu M.; 25.03.2011

Существует также streamflow. Я не использовал его сам; Я просто столкнулся с этим, читая некоторые публикации.

person zvrba    schedule 25.03.2011

Почему бы не попробовать распределитель из tbb? не уверен, насколько это «свободно от блокировок», хотя я сомневаюсь, что вы найдете настоящий распределитель без блокировок*, по крайней мере, такой, который работает между потоками/ядрами (например, tcmalloc)

* Я пытался построить его несколько месяцев назад, но сделать его беззамковым имеет некоторые недостатки, по крайней мере, с моей точки зрения. Я не слишком увлекался ареной TLS, такой как nedmalloc. В итоге я получил своего рода гибридный распределитель, который блокируется только тогда, когда чанк-бин пуст.

person Necrolis    schedule 25.03.2011
comment
Существует версия Hoard, которая полностью не блокируется. - person ; 15.05.2012