1 回答

TA贡献1943条经验 获得超7个赞
我的猜测是您的 Controller 类可以创建一个Lock:
from Threading import Lock
class Controller:
lock = Lock() # class level instance
def stop(self):
Controller.lock.acquire()
GPIO.output(self.LEFT_PIN1, False)
GPIO.output(self.LEFT_PIN2, False)
GPIO.output(self.RIGHT_PIN1, False)
GPIO.output(self.RIGHT_PIN2, False)
Controller.lock.release()
这样 Controller 类Lock在定义时创建一个单一的。
当对 进行任何调用时stop(),当前线程acquires锁定并在返回时释放它。进入调用的任何其他线程都会acquire()阻塞,直到第一个线程释放它。
更好的是使用上下文管理和with声明:
def stop(self):
with Controller.lock:
GPIO.output(self.LEFT_PIN1, False)
GPIO.output(self.LEFT_PIN2, False)
GPIO.output(self.RIGHT_PIN1, False)
GPIO.output(self.RIGHT_PIN2, False)
请注意,我Lock在课堂级别使用了 a,因为您锁定了GPIO对处理器引脚的访问权限,并且只有一组。
添加回答
举报