Стандартные коллекции Lockfree и руководства или статьи
-
19-09-2019 - |
Вопрос
Кто-нибудь знает хороший ресурс для реализации (то есть исходного кода) обычных типов данных без блокировки.Я имею в виду списки, очереди и так далее?
Реализации блокировки найти очень легко, но я не могу найти примеры алгоритмов без блокировки, а также то, как именно работает CAS и как использовать его для реализации этих структур.
Решение
Посетите блог Джулиана Бакнола.Он описывает (подробно) реализации очередей, списков, стеков и т. д. без блокировок.
Другие советы
Написано на языке С.
Если вас устраивает C++, взгляните на повышение::lockfree.Он имеет реализации Queue, Stack и Ringbuffer без блокировки.
в boost::lockfree::details
В разделе вы найдете свободный список без блокировки и реализацию тегированного указателя (предотвращение ABA).Вы также увидите примеры явного упорядочения памяти с помощью повышение::атомный (версия C++0x, находящаяся в разработке std::atomic
).
Оба boost::lockfree
и boost::atomic
не являются частью boost
пока, но оба получили внимание со стороны списка рассылки по ускоренной разработке и находятся в графике рассмотрения.