projects:libcds:dhp_refactor
Differences
This shows you the differences between two versions of the page.
Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
projects:libcds:dhp_refactor [2015/12/10 13:38] – [Рефакторинг SMR-алгоритма cds::gc::DHP] khizmax | projects:libcds:dhp_refactor [2015/12/17 12:59] (current) – khizmax | ||
---|---|---|---|
Line 15: | Line 15: | ||
Такой алгоритм чреват ABA-проблемой, | Такой алгоритм чреват ABA-проблемой, | ||
- | Предлагается модифицировать DHP, объявив массив retired ptr приватным (thread local data) для каждого потока, | + | Варианты решения: |
+ | |||
+ | 1. Объявить массив retired ptr приватным (thread local data) для каждого потока, | ||
При этом надо учитывать: | При этом надо учитывать: | ||
- | * размер массива retired data должен изменяться динамически (он зависит от числа hazard ptr на момент вызова '' | + | * размер массива retired data должен изменяться динамически (он зависит от числа hazard ptr на момент вызова '' |
- | критерий увеличения размера: | + | * нагрузка на структуру данных может быть неравномерна: |
- | * нагрузка на структуру данных может быть неравномерна: | + | Это решение плохо тем, что память используется нерационально: |
- | то есть активно работают с retired ptr array, другие потоки — updater thread – в основном добавляют/ | + | |
- | Поэтому retired ptr array каждого потока должен иметь некий '' | + | 2. Retired array - один для всех потоков. Когда один из потоков при вызове '' |
- | происходить не только по заполнении retired ptr array, но и по превышению этого '' | + | При этом поток должен создать новый retired array, чтобы остальные потоки могли продолжить свою работу. |
+ | Размер retired array в принципе не ограничен. Если '' | ||
Попутно следует упростить реализацию DHP, сократив иерархию структур. | Попутно следует упростить реализацию DHP, сократив иерархию структур. | ||
- | **Требование**: | + | **Требование**: |
projects/libcds/dhp_refactor.1449743922.txt.gz · Last modified: 2015/12/10 13:38 by khizmax