Обновить
4
Александр@cppmage

Пользователь

10
Рейтинг
Отправить сообщение

если вы собираетесь удалять зарегистрированные потоки, то подойдут и tagged pointers

Можно вместо вектора зарегистрированных потоков использовать лок-фри односвязный список, но будет ли это быстрее?)
Ну либо посмотрите у folly, там у них динамический лок фри массив

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

Код этих либ - результат длительного профилирования и оптимизации узких мест.

Информация

В рейтинге
844-й
Зарегистрирован
Активность

Специализация

Системный инженер
Стажёр
C
C++
Многопоточность