11

グローバル変数内でロックを定義したくなく、デッドロックを防ぎたいので、クラス変数をスレッド ロックとして使用することを考えていました。これは実際に機能しますか?例:

import threading

class A(object):
    lock = threading.Lock()
    a = 1

    @classmethod
    def increase_a(cls):
        with cls.lock:
            cls.a += 1

A.lockクラスの内外のどこかに変数を再割り当てしないことを考えると、グローバルロックと同じように扱われると思いますか? これは正しいです?

4

1 に答える 1

4

もちろん。簡単に取得できるロックへの参照が必要であり、それをクラスに格納するだけで十分です。

ただし、(名前マングリング__lockを有効にするために)それを呼び出すことができるので、A のサブクラスのロックと混同されません。

于 2013-05-28T11:28:07.217 に答える