вторник, 9 декабря 2014 г.

Lock-free структуры данных. Диссекция очереди @habrahabr





Со времени предыдущего поста из жизни lock-free контейнеров прошло немало времени. Я рассчитывал быстро написать продолжение трактата об очередях, но вышла заминка: о чем писать, я знал, но реализации на C++ этих подходов у меня не было. «Не годится писать о том, что сам не попробовал», — подумал я, и в результате я попытался реализовать в libcds новые алгоритмы очередей.

Сейчас настал момент, когда я могу аргументированно продолжить свой цикл. В данной статье закончим с очередями.



Кратко напомню, на чем я остановился. Были рассмотрены несколько интересных алгоритмов lock-free очередей, а под занавес приведены результаты их работы на некоторых синтетических тестах. Главный вывод — всё плохо! Надежды на то, что lock-free подход на магическом compare-and-swap (CAS) даст нам пусть не линейный, но хотя бы какой-то рост производительности с увеличением числа потоков, не оправдались. Очереди не масштабируются. В чем причина?..

Читать дальше →



via Хабрахабр / Интересные / Тематические публикации http://ift.tt/1zHY1AH

Комментариев нет:

Отправить комментарий