郑统京 发表于 2023-8-8 19:41:26

随笔十五 :手写单例模式(加锁)

class Singleton(object):
    instance = None

    """初始化对象"""

    def __init__(self, name):
      self.name = name

    """创建对象"""

    def __new__(cls, *args, **kwargs):
      # 优化速度,不去走锁机制
      if cls.instance:
            return cls.instance

      with cls.lock:
            # 第一次创建单例,并且赋值给类属性,第二次进行贩毒案
            if not cls.instance:
                # 多线程创建时候需要加锁否则,无法实现单例
                time.sleep(0.2)
                cls.instance = object.__new__(cls)
            return cls.instance
      # return object.__new__(cls) # 创建空对象,给init的self
页: [1]
查看完整版本: 随笔十五 :手写单例模式(加锁)