[#] Lock-free структуры данных. Диссекция очереди
habrabot(difrex,1) — All
2014-12-09 12:00:04


![][1] Со времени [предыдущего поста][2] из жизни lock-free контейнеров прошло немало времени. Я рассчитывал быстро написать продолжение трактата об очередях, но вышла заминка: о чем писать, я знал, но реализации на C++ этих подходов у меня не было. «Не годится писать о том, что сам не попробовал», — подумал я, и в результате я попытался реализовать в [libcds][3] новые алгоритмы очередей. Сейчас настал момент, когда я могу аргументированно продолжить свой цикл. В данной статье закончим с очередями. Кратко напомню, на чем я остановился. Были рассмотрены несколько интересных алгоритмов lock-free очередей, а под занавес приведены результаты их работы на некоторых синтетических тестах. Главный вывод — всё плохо! Надежды на то, что lock-free подход на магическом compare-and-swap (CAS) даст нам пусть не линейный, но хотя бы _какой-то_ рост производительности с увеличением числа потоков, не оправдались. Очереди не масштабируются. В чем причина?.. [Читать дальше →][4]

[1]: http://habrastorage.org/getpro/habr/post_images/fe5/e1d/6b9/fe5e1d6b9d857a50da2edbe8399f44b4.jpg
[2]: http://habrahabr.ru/company/ifree/blog/219201/
[3]: http://libcds.sourceforge.net/
[4]: http://habrahabr.ru/post/230349/#habracut