![][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