Библиотека алгоритмов без блокировки - PullRequest
9 голосов
/ 04 июля 2011

Есть ли библиотека, которая реализует алгоритмы без блокировки (очередь, связанный список и другие), написанные на C (не на C ++)? Я взглянул на некоторые библиотеки, такие как Intel, но я хотел бы использовать универсальные библиотеки, по крайней мере, более общие, чем у Intel.

Ответы [ 4 ]

9 голосов
/ 04 июля 2011

См. Практические структуры данных без блокировки из Кембриджского университета

6 голосов
/ 05 июля 2011

liblfds

http://www.liblfds.org

Wiki с полной документацией по API, форум для вопросов, блог для чтения автора, гремят на: -)

Платформа не зависит. Из коробки для Windows, Linux, Intel и ARM.

Выпуск 7 должен выйти через месяц или два. Добавит выравнивание строк кэша во время выполнения, откат и SMR. (SMR также дает массу других типов процессоров - в основном, все, что компилирует GCC, на котором поддерживаются атомарные операции, например SPARC, MIPS, IA64 и т. Д.).

Кроме того, нет лицензии - вы можете использовать код по своему усмотрению. Зарабатывать! Это не GPL.

5 голосов
/ 05 июля 2011

Я написал мой собственный , Rig , в данный момент очередь, стек и список уже есть, скоро появится хэш-таблица. Хотя я все еще работаю над этим, он предназначен для общественного потребления, и API в основном стабилен, просто используйте магистраль SVN. :)

Единственная другая подобная библиотека в C, о которой я знаю, это liblfds , хотя я никогда не использовал ее.

1 голос
/ 07 июля 2011

Я сейчас пишу свободную от блокировки библиотеку, но это C ++.Вот STL-подобный Двусторонний список без блокировки .

Менеджер памяти, который он использует, довольно мощный (32-битный CAS без проблем ABA), поэтому я использую его для созданияполный набор контейнеров: карта / набор без блокировок (с использованием пропускаемых списков), сумка без блокировок (вместо очереди / стека) и неупорядоченная карта без блокировок (хеш-таблица с использованием упорядоченных списков).

Для получения дополнительной информации о двусвязном списке см. мой ответ на связанный вопрос.

...