随笔十五 :手写单例模式(加锁)
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]