#include <QAtomicPointer>

#include <QMutex>

#include <memory>

using namespace std;

template <class T>

class QSingleTon

{

public:

  static T* instance(QObject* parent = 0)

  {

#ifdef Q_ATOMIC_POINTER_TEST_AND_SET_IS_ALWAYS_NATIVE

    if(!QAtomicPointer<T>::isTestAndSetNative())

#endif

    {

      QMutexLocker locker(&mutex);

      if(m_pInstance.testAndSetOrdered(0,0))

      {

        m_pInstance.testAndSetOrdered(0,new T(parent));

      }

    }

    return m_pInstance;   

  }

private:

  QSingleTon(){}

  QSingleTon(const QSingleTon & );

  QSingleTon & operator = (const QSingleTon & );

private:

  class GC

  {

  public:

    ~GC()

    {

      if(m_pInstance != NULL)

      {

        delete m_pInstance;

        m_pInstance = NULL;

      }

    }

  };

  static GC gc;

  static QMutex mutex;

  static QAtomicPointer<T> m_pInstance;

}

template <class T> QMutex QSingleTon<T>::mutex;

template <class T> QAtomPointer<T> QSingleTon<T>::m_pInstance = NULL;

#endif

最新文章

  1. Winform 后台将指定的控件集合添加到制定容器中
  2. CSS3-3D制作案例分析实战
  3. Hadoop组件构成
  4. C#读取网络流,读取网络上的js文件
  5. poj 3080 Blue Jeans
  6. java cpu load
  7. C++:基类和派生类
  8. /Users/XX/Library/Developer/Xcode/DerivedData/XX.app/xxsdk.bundle Directory not empty
  9. ping时不知道ping那个Ip的解决办法
  10. uva11600 状压期望dp
  11. 6-06. 理性任务调度(25)(拓扑排序啊 ZJU_PAT)
  12. iOS基础 - UITableView的数据源和代理
  13. 求字符数组逆序数(poj1007)
  14. thinkphp中的常见静态常亮
  15. AI应用开发实战
  16. One Person Game ZOJ - 3329(期望dp, 数学)
  17. System Generator 生成IP核在Vivado中进行调用
  18. [转]Java GC的原理
  19. python if 判断
  20. [CF1062F]Upgrading Cities[拓扑排序]

热门文章

  1. 8.10-Day1T2圈(circle)
  2. IDE - IDEA - 快捷键整理 - 01. Navigation
  3. layuiAdmin pro v1.x 【单页版】开发者文档
  4. sklearn 线性回归
  5. 论STA | SOCV / POCV 之 variation (2)
  6. Java 倒入文章显示前n个单词频率
  7. 连接(JOIN)
  8. js 获取年月日
  9. 【PAT甲级】1073 Scientific Notation (20 分)
  10. layui 延时加载