繁体   English   中英

较低级别的std :: atomic <unsigned int>

[英]A lower level of std::atomic<unsigned int>

我有一个struct ,它由我在两个动态链接库(或共享对象)之间共享的普通旧数据组成。 (与C ++ 11一起编译)。

数据成员之一必须是原子类型,或更确切地说,我需要能够对原子自动应用前缀++--

我担心使用std::atomic<unsigned int>作为成员,因为我认为这会将两个库绑定到使用相同的STL实现。

因此,我宁愿使用std::uint32_t作为成员,并将原子操作应用于库中的该成员。 只有我不知道该怎么做,除了使用互斥量会使性能降低到无法接受的程度。

总之,我该怎么做

std::int32_t foo;
atomic_increment(foo);

使用标准C ++ 11提供的功能?

你不能 标准C ++不尊重不同共享库中不同库实现的想法(因为它没有后者的概念),因此不认为您的情况存在。 因此,没有任何工具来支持它。

但是实际上,只要使用std::atomic atomic-实际支持原子的平台上的任何体面的编译器/库都不应在机器代码上留下任何痕迹。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM