[Ready] ValoisList
Начали работу, нужно пояснить пару моментов. Тема работы: 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
Добрый день! Реализовали оговоренную функциональность. Тесты пришлось писать свои, так-как стандартные тесты требуют более общирный интерфейс для контейнера.
Хотелось бы получить Code Review контейнера. А так-же узнать как оценить необходимое количество Hazard Poiter'ов для данного контейнера.
Тесты пришлось писать свои, так-как стандартные тесты требуют более общирный интерфейс для контейнера.
Это похвально, но самых главных тестов - многопоточных (stress) - я не вижу. Unit - это однопоточные тесты проверки интерфейса, их смысл в том, чтобы вызвать все public-методы контейнера с различными параметрами. Если коротко - их смысл в том, что все компилируется и работает как надо. А вот прохождение многопоточных stress-тестов является доказательством того, что контейнер рабочий.
Хотелось бы получить Code Review контейнера.
Хотели - получайте ;-) - HP guard не должен быть data member. Он всегда должен объявляться локально в функции. Почему?.. На этот вопрос вы должны ответить сами ;-) Подсказка 1: HP - thread local data Подсказка 2: число HP ограничено
А так-же узнать как оценить необходимое количество Hazard Poiter'ов для данного контейнера.
Так в этом и заключается соль работы, по сути. Min необходимое число HP - это свойство алгоритма контейнера. Сколько вам одновременно нужно защищать указателей в одной функции - столько и нужно HP. Так что это ВЫ должны сказать
Коллеги, когда ставите [Ready], удаляйте хотя бы кучи закомментированного кода. + в тестах потоки лаконичнее всё же создавать в цикле
Готово