这是使用 std::atomic 的正确方法吗?我Logger
在命名空间级别声明了一个名为LOGGER
:
class Logger {
public:
Logger();
~Logger();
bool Init(std::wstring logFileLocation);
bool Shutdown();
void const LogMessage(std::wstring message);
};
std::atomic<Logger&> LOGGER;
我的期望是LOGGER
实例化一次(没有竞争;它将从代码中的单个已知点初始化),然后从多个线程访问。
我是 C++ 中的多线程和线程安全的新手;但在 C# 或 Java 中,我想要么制作LOGGER
volatile ,要么(在 C# 中)在它周围放置内存栅栏。这是 C++ 中的正确类比吗?