我有一个使用串口(唯一资源)的Python进程,它使用类A的实例进行管理.使用类B和C的实例初始化了两个不同的线程,它们不断使用串口资源反对已经创造了.
import threading
Class A(threading.Thread):
#Zigbee serial port handler
def __init__(self,dev):
#something here that initialize serial port
def run():
while True:
#listening serial interface
def pack(self):
#something
def checksum(self):
#something
def write(self):
#something
Class B(threading.Thread):
def __init__(self,SerialPortHandler):
self.serialporthandler=SerialPortHandler
def run(self)
while True:
#something that uses self.serialporthandler
Class C(threading.Thread):
def __init__(self,SerialPortHandler):
self.serialporthandler=SerialPortHandler
def run(self)
while True:
#something that uses self.serialporthandler
def main():
a=A('/dev/ttyUSB1')
b=B(a)
b.start()
c=C(a)
c.start()
if __name__=='main':
while True:
main()
Run Code Online (Sandbox Code Playgroud)
问题是两个线程都试图同时访问串行资源.我可以使用同一个类A的几个实例,在敏感部分附加Lock.acquire()和Lock.release().
你们有些人能指出我的正确方法吗?
先感谢您.