Open Source & Linux Lab

It's better when it's simple

User Tools

Site Tools


projects:libcds:dhp_refactor

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revisionBoth sides next revision
projects:libcds:dhp_refactor [2015/12/10 13:38] – [Рефакторинг SMR-алгоритма cds::gc::DHP] khizmaxprojects:libcds:dhp_refactor [2015/12/10 13:39] khizmax
Line 17: Line 17:
 Предлагается модифицировать DHP, объявив массив retired ptr приватным (thread local data) для каждого потока, работающего с DHP-based структурами данных.  Предлагается модифицировать DHP, объявив массив retired ptr приватным (thread local data) для каждого потока, работающего с DHP-based структурами данных. 
 При этом надо учитывать: При этом надо учитывать:
-  * размер массива retired data должен изменяться динамически (он зависит от числа hazard ptr на момент вызова ''scan()'';  +  * размер массива retired data должен изменяться динамически (он зависит от числа hazard ptr на момент вызова ''scan()''; критерий увеличения размера: ''scan()'' не смогла удалить ни одного указателя из retired data). 
-критерий увеличения размера: ''scan()'' не смогла удалить ни одного указателя из retired data). +  * нагрузка на структуру данных может быть неравномерна: одни потоки — deleter thread – только удаляют данные из DHP-based структуры данных, то есть активно работают с retired ptr array, другие потоки — updater thread – в основном добавляют/ ищут в структуре. Поэтому retired ptr array каждого потока должен иметь некий ''timestamp'' последнего применения ''scan()'' и последующий вызов ''scan()'' должен происходить не только по заполнении retired ptr array, но и по превышению этого ''timestamp'' на некоторую дельту.
-  * нагрузка на структуру данных может быть неравномерна: одни потоки — deleter thread – только удаляют данные из DHP-based структуры данных,  +
-то есть активно работают с retired ptr array, другие потоки — updater thread – в основном добавляют/ ищут в структуре.  +
-Поэтому retired ptr array каждого потока должен иметь некий ''timestamp'' последнего применения ''scan()'' и последующий вызов ''scan()'' должен  +
-происходить не только по заполнении retired ptr array, но и по превышению этого ''timestamp'' на некоторую дельту.+
  
 Попутно следует упростить реализацию DHP, сократив иерархию структур.  Попутно следует упростить реализацию DHP, сократив иерархию структур. 
  
 **Требование**: API DHP-алгоритма измениться не должно. **Требование**: API DHP-алгоритма измениться не должно.
projects/libcds/dhp_refactor.txt · Last modified: 2015/12/17 12:59 by khizmax