美文网首页
多线程下的单例方法实现规范

多线程下的单例方法实现规范

作者: fever105 | 来源:发表于2015-12-18 00:08 被阅读64次

多线程下的单例方法实现规范

下面两种实现方式任选其一,GCD效率更高。

// 使用synchronized指令防止线程冲突(创建出多个单例对象)
+ (instancetype)sharedSingleton
{
    static RAPClass *singleObj = nil;
    /**
     对self/类对象加mutex锁
     */
    @synchronized(self) {
        if (!singleObj) {
            singleObj = [[RAPClass alloc] init];
        }
    }
    
    return singleObj;
}

// 使用GCD防止线程冲突
+ (instancetype)defaultSingleton
{
    static RAPClass *singleObj = nil;
    
    static dispatch_once_t onceToken;
    /**
     GCD的这个方法确保block中的代码只执行一次;
     且当多个线程同时执行这个函数时,其会同步执行顺序直到block第一次被执行完毕。
     */
    dispatch_once(&onceToken, ^{
        singleObj = [[RAPClass alloc] init];
    });
    
    return singleObj;
}

相关文章

  • 多线程下的单例方法实现规范

    多线程下的单例方法实现规范 下面两种实现方式任选其一,GCD效率更高。

  • 单例模式

    单例模式的实现方式: 构造函数私有 通过静态方法或枚举返回对象 多线程环境下也要保证单例对象只有一个 单例对象在反...

  • 设计模式——单例模式的破坏

    概述: 之前学习了单例模式的几种实现,解决了多线程情况下,单例的线程安全问题,保证了单例的实现。但是单例模式在下面...

  • 数据结构与算法

    单例模式 使用场景 实现方法 多线程实现方式http://xiaorui.cc/archives/3165http...

  • 理解Double-Checked Locking

    传统的单例模式实现 在多线程环境下,这种写法会引起condition race。 多线程基本实现 上面这种写法可以...

  • 小司机带你学习单例模式的六种姿势!

    单例模式是创建型模式的一种,下面总结一下在 Java 中实现单例模式的几种方法,并在多线程环境中进行了测试。 一、...

  • 单例模式 实现(MRC和ARC)和宏抽取

    MRC环境-单例实现 .h文件实现 .m文件实现 实现一个类方法重写五个系统方法 ARC环境下- 单例实现 当需要...

  • 单例模式——静态内部类懒加载方案

    单例模式的实现方法众多,但在多线程环境下,通过静态内部类的方案既能保证线程安全,又能在调用时才加载。具体示例如下:...

  • python面试题-2018.1.30

    问题:如何实现单例模式? 通过new方法来实现单例模式。 变体: 通过装饰器来实现单例模式 通过元类来创建单例模式...

  • 单例模式

    单例模式 单例模式:用来保证一个对象只能被创建一次。 普通版 代码实现如下 同步锁单例 单例模式如果再多线程中使用...

网友评论

      本文标题:多线程下的单例方法实现规范

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