为 DataClass 创建锁定函数

Create a Lock Function for DataClass

我有一个简单的 dataclass 可以像这样跟踪我的开关状态

@dataclass
class status:
    switch: bool = False

这个 class 被两个线程使用,所以我想实现一个逻辑来 lock switch 变量更改,而其他线程更改 switch 值。

类似

@dataclass
class status:
    lock: bool = False
    switch: bool = False
    
    def setattr(self, val):
        if self.lock is not False:
            self.switch = val

我想知道是否有更好的方法来设置这样的逻辑。我不需要调用上面的方法来检查 lock 更改 switch 变量的地方。

您应该使用现有的“锁”。例如在 Threading library。当您希望一个线程拥有它并使用锁定的资源时,您就“获得”了锁。当另一个线程试图获取锁时,它将阻塞直到第一个线程释放它。