0
我有一个struct
,它由在两个动态链接库(或共享对象)之间共享的普通旧数据组成。 (用C++ 11编译)。较低级别的std :: atomic <unsigned int>
其中一个数据成员必须是原子类型,或者更确切地说,我需要能够自动应用前缀++
和--
。
我担心会员使用std::atomic<unsigned int>
,因为我认为这会将两个库绑定到使用相同的STL实现。
所以我宁愿使用std::uint32_t
作为成员,并将原子操作应用于库中的该成员。只有我无法弄清楚如何做到这一点,除了使用互斥会降低性能到不可接受的程度。
总之我怎么可以这样做可以使用通过标准C++ 11功能
std::int32_t foo;
atomic_increment(foo);
?
你的问题是如何解决某些问题,当你不能依赖C++标准,并且你想要一个C++标准的答案。这没有意义。 – 2014-10-02 11:29:08
为什么不使用std :: atomic在共享库中实现它,并导出一个stl-independant接口? – galinette 2014-10-02 11:35:07