python – Thread-Sicherheitsprobleme bei Singletons
给我你的怀抱
给我你的怀抱 2017-05-18 10:45:22
0
1
653

class Singleton(object):
    __instance = None

    def __new__(cls, *args, **kwargs):
        if not cls.__instance:
           cls.__instance = super(Singleton, cls).__new__(cls, *args, **kwargs)

        return cls.__instance
    
if __name__ == '__main__':

    # 多线程中单例的使用
    from threading import Thread
    def func():
        print(id(Singleton()))

for index in range(10000):
    Thread(target=func).start()

Das Obige ist eine Möglichkeit, einen Singleton in Python zu implementieren, aber wir alle wissen, dass diese Implementierung nicht threadsicher ist. Im obigen Code habe ich den Testcode selbst geschrieben, aber festgestellt, dass die ID-Ausgabe dieselbe ist. Dies kann nicht beweisen, dass es nicht Thread-sicher ist. Meine Frage ist: Wie schreibe ich Testcode, der beweisen kann, dass diese Implementierung nicht Thread-sicher ist?

给我你的怀抱
给我你的怀抱

Antworte allen(1)
刘奇

本来单例模式就只能实例化1个对象,跟线程没有任何关系。即使是线程安全的,它也返回相同的id。

Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage