add std::atomic