Qt自己就提供了专门的宏 Q_GLOBAL_STATIC。经过这个宏不但定义简单,还能够得到线程安全性。html
一、先看官方文档安全
https://doc.qt.io/qt-5/qglobalstatic.htmlspa
https://doc.qt.io/qt-5/threads-reentrancy.html.net
二、再看使用方法线程
Q_GLOBAL_STATIC(Type, VariableName) Q_GLOBAL_STATIC_WITH_ARGS(Type, VariableName, Arguments)
rule.hdebug
#ifndef RULE_H #define RULE_H class Rule { public: static Rule* instance(); }; #endif // RULE_H
rule.cpp指针
#include "rule.h" Q_GLOBAL_STATIC(Rule, rule) Rule* Rule::instance() { return rule(); }
在任何地方,引用头文件 include "rule.h"code
就能够 Rule::instance()->xxxxxx()htm
---blog
参考文献
https://www.cnblogs.com/findumars/p/10392770.html
http://qtdebug.com/qtbook-singleton/
引伸阅读
https://doc.qt.io/qt-5/qthreadpool.html Qt线程池
https://doc.qt.io/qt-5/qsharedpointer.html Qt 智能指针
https://doc.qt.io/QtMQTT/index.html Qt Mqtt