使用cpp11写一个线程安全的单例模板
时间: 2023-01-28 10:52:36 浏览: 102
C++线程安全的单例模式
下面是一个使用 C++11 写的线程安全的单例模板:
```cpp
template<typename T>
class Singleton {
public:
static T& GetInstance() {
static T instance;
return instance;
}
private:
Singleton() = default;
~Singleton() = default;
Singleton(const Singleton&) = delete;
Singleton& operator=(const Singleton&) = delete;
};
```
使用方法:
```cpp
class MyClass {
public:
void DoSomething() {
// ...
}
};
int main() {
MyClass& instance = Singleton<MyClass>::GetInstance();
instance.DoSomething();
return 0;
}
```
这个模板使用了 C++11 的 `static` 局部变量和 `thread_local` 关键字,保证了单例在多线程环境下的线程安全。
阅读全文