Можно вместо вектора зарегистрированных потоков использовать лок-фри односвязный список, но будет ли это быстрее?) Ну либо посмотрите у folly, там у них динамический лок фри массив
Добрый день, я ознакомился с реализацией folly и немного с libcds. Концептуально идея HP у нас схожая, protect, retire, архитектура также схожая. Но вот как это реализовано и какие доп фичи есть - тут пропасть. Например у folly есть когорты, чтобы гарантировать синхронное удаление объектов, как я понимаю. Так как в стандартных HP никогда не знаешь когда удалится указатель. Или используется например, как я понял, F14set вместо vector<void*> active_hp как у меня.
Код этих либ - результат длительного профилирования и оптимизации узких мест.
если вы собираетесь удалять зарегистрированные потоки, то подойдут и tagged pointers
Можно вместо вектора зарегистрированных потоков использовать лок-фри односвязный список, но будет ли это быстрее?)
Ну либо посмотрите у folly, там у них динамический лок фри массив
Добрый день, я ознакомился с реализацией folly и немного с libcds. Концептуально идея HP у нас схожая, protect, retire, архитектура также схожая. Но вот как это реализовано и какие доп фичи есть - тут пропасть.
Например у folly есть когорты, чтобы гарантировать синхронное удаление объектов, как я понимаю. Так как в стандартных HP никогда не знаешь когда удалится указатель.
Или используется например, как я понял,
F14setвместоvector<void*> active_hpкак у меня.Код этих либ - результат длительного профилирования и оптимизации узких мест.