Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[Ready] ValoisList #107

Open
wants to merge 47 commits into
base: master
Choose a base branch
from
Open

[Ready] ValoisList #107

wants to merge 47 commits into from

Conversation

w3prog
Copy link

@w3prog w3prog commented Dec 27, 2017

Начали работу, нужно пояснить пару моментов.
Тема работы:
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 w3prog changed the title Valois list (unfinished) [WIP] ValoisList Jan 4, 2018
@w3prog
Copy link
Author

w3prog commented Jan 10, 2018

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

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

@w3prog w3prog changed the title [WIP] ValoisList [Ready] ValoisList Jan 10, 2018
@khizmax
Copy link
Owner

khizmax commented Jan 10, 2018

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

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

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

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

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

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

@eugenyk
Copy link
Contributor

eugenyk commented Jan 19, 2018

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

@w3prog
Copy link
Author

w3prog commented Jan 27, 2018

Готово

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

4 participants