Use std::atomic in smartpointer, reduced usage of cstrhash