Maison  >  Questions et réponses  >  le corps du texte

python - Problèmes de sécurité des threads sur les singletons


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()

Ce qui précède est un moyen d'implémenter un singleton en python, mais nous savons tous que cette implémentation n'est pas thread-safe. Dans le code ci-dessus, j'ai écrit le code de test moi-même, mais j'ai constaté que la sortie id était la même. Cela ne peut pas prouver qu'il n'est pas thread-safe ? Ma question est : Comment écrire du code de test qui peut prouver que cette implémentation n'est pas thread-safe ?

给我你的怀抱给我你的怀抱2711 Il y a quelques jours582

répondre à tous(1)je répondrai

  • 怪我咯

    怪我咯2017-05-18 10:47:22

    À l'origine, le mode singleton ne peut instancier qu'un seul objet et n'a rien à voir avec les threads. Même s'il est thread-safe, il renvoie le même identifiant.

    répondre
    0
  • Annulerrépondre