多线程设计,一个串口设备在3个线程中被同时使用, 线程1发送数据 “test1:123456!” 线程2发送数据 “test2:abcdef!” 线程3发送数据 “test3:linux uart!” 请给出示例代码
时间: 2023-09-13 08:03:06 浏览: 141
一个用多线程通信的串口程序
下面是一个简单的示例代码,实现了对串口设备的多线程访问:
```python
import threading
# 模拟串口设备
class SerialDevice:
def __init__(self):
self.lock = threading.Lock()
def send_data(self, data):
with self.lock:
print(data)
# 线程1,发送数据 "test1:123456!"
def thread1(serial):
serial.send_data("test1:123456!")
# 线程2,发送数据 "test2:abcdef!"
def thread2(serial):
serial.send_data("test2:abcdef!")
# 线程3,发送数据 "test3:linux uart!"
def thread3(serial):
serial.send_data("test3:linux uart!")
if __name__ == '__main__':
serial = SerialDevice()
t1 = threading.Thread(target=thread1, args=(serial,))
t2 = threading.Thread(target=thread2, args=(serial,))
t3 = threading.Thread(target=thread3, args=(serial,))
t1.start()
t2.start()
t3.start()
t1.join()
t2.join()
t3.join()
```
在上面的示例代码中,我们创建了一个 SerialDevice 类来模拟串口设备,并使用 threading.Lock() 创建了一个互斥锁。在类的 send_data() 方法中,使用 with self.lock: 实现了对串口设备的加锁和解锁操作。在三个线程中,我们分别调用了 SerialDevice 类的 send_data() 方法来发送不同的数据。在主线程中,我们等待三个线程执行完毕后再退出程序。
阅读全文