#c #memory #c 17 #std
#c #память #c 17 #std
Вопрос:
Чтобы создать новый polymophic_allocator, ppl может использовать некоторые ресурсы по умолчанию
std::pmr::polymorphic_allocator<char> newdel { std::pmr::new_delete_resource() };
std::pmr::polymorphic_allocator<char> synced { std::pmr::synchronized_pool_resource() };
std::pmr::polymorphic_allocator<char> nonsync { std::pmr::unsynchronized_pool_resource() };
Мой вопрос new_delete_resource
потокобезопасен?
Комментарии:
1. В стандарте ничего не говорится о гарантии потокобезопасности при
new_delete_resource()
возвратеmemory_resource
. Таким образом, было бы разумно сделать вывод, что он определяется реализацией. Однако ему также не нужно сохранять какое-либо внутреннее состояние и просто делегировать работу обычномуoperator new[]
иoperator delete[]
, поэтому я бы сказал, что он такой же потокобезопасный, как и сами эти операторы, что в основном означает потокобезопасность . Однако я не чувствую себя достаточно уверенно, чтобы опубликовать это в качестве ответа. Я проверил реализацию GCC, и она реализована более или менее таким (потокобезопасным) способом.