串口传输用不用使用多线程 为什么
发布网友
发布时间:2022-05-16 12:14
我来回答
共4个回答
热心网友
时间:2023-10-22 09:29
主要是两个原因:
1、串口的通讯速率相对电脑来说是很慢的(最高110K,以太网都千兆了)。正常情况下,在等待下一个串口信号的间隙,操作系统已经完成了时间片轮转。多以不需要多线程。
2、标准串口是独占资源,所以除非是多个串口同时操作,在单串口上实现多线程运作效率会更低。因为必须在切换线程时考虑到释放独占资源,程序的复杂度也会呈几何级数上升,完全得不偿失。
热心网友
时间:2023-10-22 09:29
异步串口可以不用,同步阻塞方式必须用,否则调用readfile writefile会阻塞线程,窗口就卡死了。。。
单线程用异步串口可以,但并不好,异步方式,窗口界面一般你还需要用个定时器,定时来查询通讯是否完成,何必这么麻烦,实时性又差。。。。
如果想实时性好一些,最好是阻塞方式,因为这样只要通讯完成,马上就退出阻塞,你就可以继续了,单独的线程又不干别的,阻塞也就阻了,主线程是有其他事情要做,窗口的所有操作都是主线程的事,如果阻塞了,窗口就死了。。。。
如果你用串口控件的话,也可以不用创建线程(控件替你创建好了),这就简单的多。。。。
热心网友
时间:2023-10-22 09:30
除非你是计算机上同时存在多个串口需要操作(比如使用了多串口卡或者USB转串口集线器),可以考虑开多线程,否则没有必要。
热心网友
时间:2023-10-22 09:30
需要,不然会阻塞其它处理,比如界面渲染。