相关疑难解决方法(0)

VC2010是静态init线程安全吗?

我一直在寻找SO和MSDN的答案来回答这个问题,但似乎无法找到明确的最终答案......

我知道它是在C++ 11标准中并且当前的GCC版本就是这样的,但VC2010目前是否保证了本地静态变量初始化的线程安全性?

即:这对VC2010有线程安全吗?

    static S& getInstance()
    {
        static S instance;
        return instance;
    }
Run Code Online (Sandbox Code Playgroud)

...如果没有,目前使用VC2010在C++中获得线程安全的单例实现的最佳实践是什么?

编辑:正如Chris Betti的回答所指出的,VC2010没有实现本地静态变量init的线程安全性.

c++ multithreading thread-safety visual-c++ c++11

10
推荐指数
2
解决办法
4431
查看次数

C++11 中线程安全的局部静态变量初始化的成本?

我们知道局部静态变量初始化在 C++11 中是线程安全的,现代编译器完全支持这一点。(在 C++11 中局部静态变量初始化线程安全吗?

使其线程安全的成本是多少?我知道这很可能依赖于编译器实现。

上下文:我有一个多线程应用程序(10 个线程)通过以下函数以非常高的速率访问单例对象池实例,我担心它的性能影响。

template <class T>
ObjectPool<T>* ObjectPool<T>::GetInst()
{
    static ObjectPool<T> instance;
    return &instance;
}
Run Code Online (Sandbox Code Playgroud)

c++ thread-safety static-initialization c++11

4
推荐指数
1
解决办法
1505
查看次数