【发布时间】:2018-05-02 08:50:48
【问题描述】:
我使用std::atomic 来表示原子性。尽管如此,在代码的某个地方,程序逻辑并不需要原子性。在这种情况下,我想知道是否可以,无论是迂腐还是实际,使用构造函数代替 store() 作为优化。例如,
// p.store(nullptr, std::memory_order_relaxed);
new(p) std::atomic<node*>(nullptr);
【问题讨论】:
-
优化如何?在这部分代码中使用其他变量,然后在完成后将结果存储在
p中。 -
@BoPersson 我认为普通存储可能比原子存储更有效。就我而言,我需要将一个值存储到原子中。根据程序逻辑,在此期间没有其他线程会读/写这个原子。因此,一个普通的商店就足够了。
-
这听起来像是对未来维护者(包括您自己)的陷阱。
-
@PeteBecker:最隐蔽的陷阱之一
标签: c++ optimization atomic c++17 c++-standard-library