Sont Python variables d'instance de thread-safe?

OK, vérifier les codes suivants de la première:

class DemoClass():

    def __init__(self):
        #### I really want to know if self.Counter is thread-safe. 
        self.Counter = 0

    def Increase(self):
        self.Counter = self.Counter + 1

    def Decrease(self):
        self.Counter = self.Counter - 1

    def DoThis(self):
        while True:
            Do something

            if A happens:
                self.Increase()
            else:
                self.Decrease()

            time.sleep(randomSecs)

    def DoThat(self):
        while True:
            Do other things

            if B happens:
                self.Increase()
            else:
                self.Decrease()

            time.sleep(randomSecs)

    def ThreadSafeOrNot(self):
        InterestingThreadA = threading.Thread(target = self.DoThis, args = ())
        InterestingThreadA.start()

        InterestingThreadB = threading.Thread(target = self.DoThat, args = ())
        InterestingThreadB.start()

Je suis confronté à la même situation que ci-dessus. Je veux vraiment savoir si c'est thread-safe pour self.Counter, eh bien, si non, quelles options dois-je avoir? Je ne peux que penser à threading.RLock() pour verrouiller cette ressource, une meilleure idée?

OriginalL'auteur Shane | 2011-11-29