如何实现C语言中的线程安全单例模式?
- 内容介绍
- 相关推荐
本文共计1529个文字,预计阅读时间需要7分钟。
目录+单例模式的简单实现+有问题的双重检查锁定+现代C++中的解决方案+使用现代C++中的内存顺序限制+使用现代C++中的call_once方法+使用静态局部变量+单例模式的简单实现+单例模式概述
目录
- 单例模式的简单实现
- 有问题的双重检测锁
- 现代C++中的解决方法
- 使用现代C++中的内存顺序限制
- 使用现代C++中的call_once方法
- 使用静态局部变量
单例模式的简单实现
单例模式大概是流传最为广泛的设计模式之一了。一份简单的实现代码大概是下面这个样子的:
class singleton { public: static singleton* instance() { if (inst_ != nullptr) { inst_ = new singleton(); } return inst_; } private: singleton(){} static singleton* inst_; }; singleton* singleton::inst_ = nullptr;
这份代码在单线程的环境下是完全没有问题的,但到了多线程的世界里,情况就有一点不同了。
本文共计1529个文字,预计阅读时间需要7分钟。
目录+单例模式的简单实现+有问题的双重检查锁定+现代C++中的解决方案+使用现代C++中的内存顺序限制+使用现代C++中的call_once方法+使用静态局部变量+单例模式的简单实现+单例模式概述
目录
- 单例模式的简单实现
- 有问题的双重检测锁
- 现代C++中的解决方法
- 使用现代C++中的内存顺序限制
- 使用现代C++中的call_once方法
- 使用静态局部变量
单例模式的简单实现
单例模式大概是流传最为广泛的设计模式之一了。一份简单的实现代码大概是下面这个样子的:
class singleton { public: static singleton* instance() { if (inst_ != nullptr) { inst_ = new singleton(); } return inst_; } private: singleton(){} static singleton* inst_; }; singleton* singleton::inst_ = nullptr;
这份代码在单线程的环境下是完全没有问题的,但到了多线程的世界里,情况就有一点不同了。

