C++11 要求函数内的静态变量在函数第一次运行时以原子方式初始化。有效地做到这一点的唯一方法是双重检查锁定,以始终防止昂贵的互斥锁。
我只是需要在函数内有一个静态原子
我检查了Windows下使用VC++和Intel C++以及Linux下使用clang++和g++生成的代码,所有生成的代码都符合我的预期。但这真的可靠吗?并且按照标准规定,原子应该独立于其他对象进行处理吗?
最佳答案
std::atomic
的默认构造函数是 constexpr,尽管在 C++20 之前这是因为它很简单并且对象尚无法使用。这意味着不需要动态初始化,这与标准表明这是有效的一样。
关于c++ - 将atomic<>定义为函数内的静态变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72238929/