C++ 11中shared_ptr的原子操作

Kan*_* Li 12 c++ shared-ptr c++11

通过阅读c ++ 11 draft n3242,第20.7.2.5节,看起来我们在shared_ptr上有原子操作,这使我们能够在复杂的结构上进行无锁,而不必担心GC /内存泄漏.

但是,我无法在GCC-4.7.0中成功使用它.我只是测试了以下程序

#include <atomic>
#include <memory>
#include <string>

struct X {
    int x;
    double y;
    std::string s;
};

int main() {
    std::shared_ptr<X> x(new X);
    auto p = std::atomic_load(&x);
}
Run Code Online (Sandbox Code Playgroud)

它有编译错误:

c.cpp:13:33: error: no matching function for call to ‘atomic_load(std::shared_ptr<X>*)’
Run Code Online (Sandbox Code Playgroud)

有谁知道我在这里错过了什么?或者只是gcc还没有实现呢?

bam*_*s53 2

看起来它还没有在 libstdc++ 中。

它也不在 libc++ 中

VS11 beta 有它。我认为这是我在 VS11 库中发现的第一个不在 libc++ 中的东西。