美文网首页
单例的理解

单例的理解

作者: 鄂北 | 来源:发表于2020-05-04 10:56 被阅读0次
+ (instancetype)sharedInstance
{
    // 静态指针
    static FUParameters * single = nil;
    
    // 类似一个线程锁的效果
    static dispatch_once_t token;
    // 保证block内部的代码在整个应用程序当中只会执行一次
    dispatch_once(&token,^{
        single = [FUParameters new];
    });
    
    return single;
}

static保证只初始化一次Static关键字理解

dispatch_once函数内部使用了信号量保证了线程安全问题。在dispatch_once_t前使用static关键字,保证了dispatch_once_t只执行一次,默认dispatch_once_t的值为0,dispatch_once在执行时会监测dispatch_once_t的值是否为大于等于0,如果为0就继续往下执行并将值减1改为-1,如果小于0就不继续执行(信号量原理)。这就保证了单例在全局中只执行一次。

信号量是一个非负整数,定义了两种原子操作:wait跟signal来进行访,信号量主要用于线程同步。当一个线程调用wait操作时,如果信号量的值大于0,则获得资源并将信号量值减一,如果等于0线程睡眠直到信号量值大于0或者超时;singal将信号量的值加1,如果这时候有正在等待的线程,唤醒该线程。

细说@synchronized和dispatch_once
GCD信号量-dispatch_semaphore_t

本文涉及到的static,dispatch_once,GCD信号量知识点可以点击蓝色字体前往各大神的详解

相关文章

  • 单例的理解

    个人从两方面进行分析: 1.static静态变量 用static声明局部变量时,则改变变量的存储方式(生命期),使...

  • 单例的理解

    static保证只初始化一次Static关键字理解 dispatch_once函数内部使用了信号量保证了线程安全问...

  • python之理解单例模式

    python之理解单例模式 1、单例模式 单例模式(Singleton Pattern)是一种常见的软件设计模式,...

  • java单例模式(推荐)

    单例模式有许多写法,可以结合自己理解选择一个自己喜欢的 引入一个其他人的博客关于单例的不错总结; 单例 单例模式 ...

  • Java四种单例设计模式

    Java中的四种单例模式 单例模式是最容易理解的设计模式之一,介绍Java中单例模式的四种写法。 1.基本单例模式...

  • 理解单例模式

    概念理解 单例模式是最简单的设计模式之一,简单理解就是一个类在整个系统运行环境中只有一个实例。这是一种创建型模式,...

  • 单例模式的理解

    单例的作用 :个人的理解就是内存地址只分配一次,不管你是在主线程调用还是在子线程调用,方便我们使用的某个对象 。比...

  • 单例模式的理解

    单例设计模式: 单例模式分为懒汉式和饿汉式。下面分别介绍懒汉式和饿汉式的几种写法。 饿汉式第一种(jdk1.5之前...

  • 单例模式

    单例设计模式是几种设计模式中比较容易理解的,手写单例模式也是面试频繁问到的。下面总结一下单例模式的几种写法: //...

  • 单例模式

    一、单例模式介绍 单例模式简而言之就是只有一个实例化对象的类,初学者可以通过单例 模式的设计更好的理解面向...

网友评论

      本文标题:单例的理解

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