在python中,全局互斥和实例互斥的区别是什么?



使用互斥锁作为全局变量和实例变量有什么区别?例如,这两种用法?:

my_lock = RLock()
class myclass:
    def __init__(self):
        self.mutex = my_lock
    def func():
        with self.mutex:
            #do something

class myclass:
    def __init__(self):
        self.mutex = RLock()
    def func():
        with self.mutex:
            #do something

第一个版本;

my_lock = RLock()
class myclass:
    def __init__(self):
        self.mutex = my_lock

…创建一个对类的所有实例通用的互斥锁,而

class myclass:
    def __init__(self):
        self.mutex = RLock()

…为每个实例创建一个互斥锁。

在第一种情况下,互斥锁阻止func任何 myclass对象中同时执行。

在第二种情况下,互斥锁阻止func单个 myclass对象中同时执行。

相关内容

最新更新