просто обертка над std::atomic_load/CES/...? кажется, там работы не должно быть много
ну, реализация в фолли не особо тривиальная
Хорошо если мьютекс не лочит
https://github.com/microsoft/STL/blob/main/stl/inc/memory#L3862-L3977
Чтобы тривиальная реализация работала, нужно уметь атомарно изменять указатель на контрольный блок и счетчик в контрольном блоке. Железо так не умеет и поэтому приходится изгаляться.
Так это всё уже умели std::atomic_load и его друзья, которые были до С++20 (https://en.cppreference.com/w/cpp/memory/shared_ptr/atomic)
Найди реализацию, у майков там мьютекс вроде был (как и в этой, похоже)
У них были какие-то подводные камни. Из головы не могу вспомнить.
тогда мьютекс должен был бы быть и просто в shared_ptr, т.к. раньше методы были
Обсуждают сегодня