Qt单例:Qt有专门的宏Q_GLOBAL_STATIC,用来实现线程安全的单例模式

简介: Qt单例:Qt有专门的宏Q_GLOBAL_STATIC,用来实现线程安全的单例模式

Qt本身就提供了专门的宏 Q_GLOBAL_STATIC。通过这个宏不但定义简单,还可以获得线程安全性。


1、先看官方文档


https://doc.qt.io/qt-5/qglobalstatic.html


https://doc.qt.io/qt-5/threads-reentrancy.html



2、再看使用方法


Q_GLOBAL_STATIC(Type, VariableName)

Q_GLOBAL_STATIC_WITH_ARGS(Type, VariableName, Arguments)


3、举例说明


rule.h

#ifndef RULE_H
#define RULE_H
#include <QGlobalStatic>
#define RULE Rule::instance()
class Rule
{
public:
    Rule() {}
    virtual ~Rule() {}
public:
    static Rule* instance();
public:
    void test();
};
#endif // RULE_H


rule.cpp


#include "rule.h"
Q_GLOBAL_STATIC(Rule, rule)
Rule* Rule::instance()
{
    return rule();
}
void Rule::test()
{
    //todo
}

在任何地方,引用头文件 include "rule.h"


就可以Rule::instance()->test();


或者使用宏RULE->test();



---


参考文献


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


https://wiki.qt.io/QtDesignStudio


相关文章
|
4天前
|
安全 Java
Qt经典面试题:Qt开启线程的几种方式
Qt经典面试题:Qt开启线程的几种方式
36 0
|
4天前
|
算法 Unix Linux
Linux与Qt线程优先级的对应关系:一次全面解析
Linux与Qt线程优先级的对应关系:一次全面解析
30 0
|
4天前
|
安全 数据处理 C++
【Qt 底层之事件驱动系统】深入理解 Qt 事件机制:主事件循环与工作线程的交互探究,包括 QML 的视角
【Qt 底层之事件驱动系统】深入理解 Qt 事件机制:主事件循环与工作线程的交互探究,包括 QML 的视角
144 3
|
4天前
|
程序员 编译器 C++
【深入探究Qt内部架构】QObject、事件循环与Q_OBJECT宏的协同作用(一)
【深入探究Qt内部架构】QObject、事件循环与Q_OBJECT宏的协同作用
47 0
|
4天前
|
安全 Java Spring
Spring框架中的单例Bean是线程安全的吗?
Spring框架中的单例Bean是线程安全的吗?
10 1
|
4天前
|
设计模式 安全 Java
【JAVA】Java 中什么叫单例设计模式?请用 Java 写出线程安全的单例模式
【JAVA】Java 中什么叫单例设计模式?请用 Java 写出线程安全的单例模式
|
4天前
|
设计模式 消息中间件 安全
【Java多线程】关于多线程的一些案例 —— 单例模式中的饿汉模式和懒汉模式以及阻塞队列
【Java多线程】关于多线程的一些案例 —— 单例模式中的饿汉模式和懒汉模式以及阻塞队列
12 0
|
4天前
|
设计模式 安全 编译器
【代码片段】【C++】C++11线程安全单例模式
【代码片段】【C++】C++11线程安全单例模式
17 1
|
4天前
|
设计模式 安全 Java
【JavaEE多线程】从单例模式到线程池的深入探索
【JavaEE多线程】从单例模式到线程池的深入探索
22 2
|
4天前
|
Java 程序员 API
【深入探究 Qt 线程】一文详细解析Qt线程的内部原理与实现策略
【深入探究 Qt 线程】一文详细解析Qt线程的内部原理与实现策略
88 0