美文网首页
1.5 单例模式

1.5 单例模式

作者: 再凌 | 来源:发表于2021-03-02 12:00 被阅读0次

    不做赘述, 单例模式想必大家已经烂熟于心了.

    这里提一下多线程如何保证的单例模式的线程安全.

    Singleton* Singleton::getInstance()
    {
      if(m_singleton == NULL)
      {
        m_lock.Lock();
        if(m_singleton ==NULL)
          m_singleton = new Singleton();
        m_lock.Unlock();
      }
      return m_singleton;
    }
    

    外部的if判断不加锁, 内部又有一层if判断, 这个判断加锁, 只要有了第一次的创建, 后续的创建都不需要走到内部, 于是性能没有降低很多.

    C++11中还有std::once的方法, 保证创建只会被执行一次, 也可以做到线程安全.

    相关文章

      网友评论

          本文标题:1.5 单例模式

          本文链接:https://www.haomeiwen.com/subject/iwjgfltx.html