libcds icon indicating copy to clipboard operation
libcds copied to clipboard

[Ready] ValoisList

Open w3prog opened this issue 8 years ago • 4 comments

Начали работу, нужно пояснить пару моментов. Тема работы: John D. Valois Lock-Free Linked Lists Using Compare-and-Swap http://people.csail.mit.edu/bushl2/rpi/portfolio/lockfree-grape/documents/lock-free-linked-lists.pdf

w3prog avatar Dec 27 '17 12:12 w3prog

Добрый день! Реализовали оговоренную функциональность. Тесты пришлось писать свои, так-как стандартные тесты требуют более общирный интерфейс для контейнера.

Хотелось бы получить Code Review контейнера. А так-же узнать как оценить необходимое количество Hazard Poiter'ов для данного контейнера.

w3prog avatar Jan 10 '18 19:01 w3prog

Тесты пришлось писать свои, так-как стандартные тесты требуют более общирный интерфейс для контейнера.

Это похвально, но самых главных тестов - многопоточных (stress) - я не вижу. Unit - это однопоточные тесты проверки интерфейса, их смысл в том, чтобы вызвать все public-методы контейнера с различными параметрами. Если коротко - их смысл в том, что все компилируется и работает как надо. А вот прохождение многопоточных stress-тестов является доказательством того, что контейнер рабочий.

Хотелось бы получить Code Review контейнера.

Хотели - получайте ;-) - HP guard не должен быть data member. Он всегда должен объявляться локально в функции. Почему?.. На этот вопрос вы должны ответить сами ;-) Подсказка 1: HP - thread local data Подсказка 2: число HP ограничено

А так-же узнать как оценить необходимое количество Hazard Poiter'ов для данного контейнера.

Так в этом и заключается соль работы, по сути. Min необходимое число HP - это свойство алгоритма контейнера. Сколько вам одновременно нужно защищать указателей в одной функции - столько и нужно HP. Так что это ВЫ должны сказать

khizmax avatar Jan 10 '18 20:01 khizmax

Коллеги, когда ставите [Ready], удаляйте хотя бы кучи закомментированного кода. + в тестах потоки лаконичнее всё же создавать в цикле

eugenyk avatar Jan 19 '18 20:01 eugenyk

Готово

w3prog avatar Jan 27 '18 17:01 w3prog