我有一个struct
包含一个整数(比如int m_ref
)表示内部引用计数。
为了保持 C 兼容性,我不能将类型更改为std::atomic<int>
:struct
可能只包含普通的旧数据。
但是,我想调整我的代码以利用 C++11 中的原子特性;即我需要完成:
++m_ref;
和
--m_ref;
作为原子操作。我目前正在使用汇编程序(英特尔总线锁)来执行此操作,但该代码几乎不可移植,并且由于 C++ 提供了标准构造,我很想将其删除。
不知何故,我需要进入“幕后”并做些什么atomic<T>
,但没有创建原子类型的开销:我担心附加 m_refatomic<T>
会降低性能。
我怀疑这是非常标准的,我在这里遗漏了一些简单的东西。