Lockfree стандартные коллекции и учебник или статьи - PullRequest
4 голосов
/ 13 ноября 2009

Кто-нибудь знает хороший ресурс для реализации (имеется в виду исходный код) обычных типов данных без блокировок? Я думаю о списках, очередях и так далее?

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

Ответы [ 3 ]

4 голосов
/ 13 ноября 2009

Ознакомьтесь с блогом Джулиана М. Бакнолла. Он описывает (подробно) реализации без блокировок очередей, списков, стеков и т. Д.

http://www.boyet.com/Articles/LockfreeQueue.html

http://www.boyet.com/Articles/LockfreeStack.html

2 голосов
/ 02 февраля 2010

Если с C ++ все в порядке, взгляните на boost :: lockfree . Он имеет реализацию Queue, Stack и Ringbuffer без блокировки.

В разделе boost::lockfree::details вы найдете свободную от блокировок реализацию freelist и тегового указателя (предотвращение ABA). Вы также увидите примеры явного упорядочения памяти через boost :: atomic (версия C ++ 0x std::atomic в разработке).

И boost::lockfree, и boost::atomic еще не являются частью boost, но оба заметили внимание в списке рассылки boost-development и находятся в расписании для рассмотрения.

2 голосов
/ 24 ноября 2009

http://www.liblfds.org

Написано на C.

...