Open Source & Linux Lab

It's better when it's simple

User Tools

Site Tools


projects:hpx:start

Differences

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

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
projects:hpx:start [2020/05/29 16:31] agaevprojects:hpx:start [2020/06/08 10:30] (current) agaev
Line 182: Line 182:
 Мои варианты: Множественное наследование от двух типов, каждый из которых наследуется от hazptr_obj_base Мои варианты: Множественное наследование от двух типов, каждый из которых наследуется от hazptr_obj_base
 Function hook решает эту проблему. Function hook решает эту проблему.
 +
 +===== Альтернативные варианты ====
 +
 +Наша задача, по сути, научиться определять, защищен ли в текущий момент такой вот указатель(Тип его не знаем(void*), либо RTTI). То есть необходимо сравнить его с другими Hazard Pointers, и определить, равняются ли они, логически.
 +
 +В protect мы кладём какой-то указатель, в retire программист должен дать какой-то isDefendedBy(HP*), с помощью которого можно будет определить, защищен ли сейчас объект, который мы хотим удалить.
 +
 +Сейчас это isDefendedBy == isSame для libcds, и static_cast<hazptr_obj_base>::isSame() для folly и prorosals.
 +
 +Это позволит делать улучшенную логику. К примеру, когда, пытаясь удалить какой-то объект, мы должны убедиться, что никто не защищает его потомков(К примеру, удаляя узел дерево, мы должны убедиться, что дети и далее не защищены).
 +
 +====== Is HP obsolete? ======
 +
 +Hazard eras: http://concurrencyfreaks.blogspot.com/2017/05/hazard-eras-non-blocking-memory.html
 +
 +Wait free eras: https://rusnikola.github.io/files/wfe-ppopp20.pdf
projects/hpx/start.1590759088.txt.gz · Last modified: 2020/05/29 16:31 by agaev