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:41] – 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 на момент вызова '' | ||
* нагрузка на структуру данных может быть неравномерна: | * нагрузка на структуру данных может быть неравномерна: | ||
+ | Это решение плохо тем, что память используется нерационально: | ||
+ | |||
+ | 2. Retired array - один для всех потоков. Когда один из потоков при вызове '' | ||
+ | При этом поток должен создать новый retired array, чтобы остальные потоки могли продолжить свою работу. | ||
+ | Размер retired array в принципе не ограничен. Если '' | ||
Попутно следует упростить реализацию DHP, сократив иерархию структур. | Попутно следует упростить реализацию DHP, сократив иерархию структур. | ||
**Требование**: | **Требование**: |
projects/libcds/dhp_refactor.txt · Last modified: 2015/12/17 12:59 by khizmax