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 回答