Является ли std ::pmr ::new_delete_resource потокобезопасным

#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, и она реализована более или менее таким (потокобезопасным) способом.