Вопрос

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

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

Это было полезно?

Решение

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

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

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

Другие советы

http://www.liblfds.org

Написано на языке С.

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

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

Оба boost::lockfree и boost::atomic не являются частью boost пока, но оба получили внимание со стороны списка рассылки по ускоренной разработке и находятся в графике рассмотрения.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top