Singleton& Singleton::getInstance() {
    static Singleton instance;
    return instance;
}

以上代码来代替双重检查锁,更简洁,效率更好。但是安全吗?答案是在c++11中,gcc编译器是安全的(vs studio 2014之前的不安全),编译器对以上代码做了类似的保护。
RAMCloud有个提交这么改了。
https://github.com/PlatformLab/RAMCloud/commit/9517acc5d5cc154a29f361070297f2aa4cad9199

参考:
http://stackoverflow.com/a/27206650
http://anotherlayer.net/2012/05/04/static-initialization-and-thread-safety/

0 回复
需要 登录 后方可回复, 如果你还没有账号你可以 注册 一个帐号。