gpt4 book ai didi

c++ - 较低级别的 std::atomic

转载 作者:行者123 更新时间:2023-11-28 06:39:57 24 4
gpt4 key购买 nike

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

其中一个数据成员必须是原子类型,或者更准确地说,我需要能够应用前缀 ++--以原子方式进行。

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

所以我宁愿使用 std::uint32_t作为成员并将原子操作应用于库中的该成员。只有我不知道该怎么做,除了使用互斥锁,这会将性能降低到 Not Acceptable 程度。

总而言之,我该怎么做

std::int32_t foo;
atomic_increment(foo);

使用标准 C++11 提供的函数?

最佳答案

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

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

关于c++ - 较低级别的 std::atomic<unsigned int>,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26159803/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com