回复: Qt多线程传输变量的问题
#6 回 liruigood 的帖子 [patrickwf 12-08 08:13]
liruigood:你的意思是AutoControlPacket这个ControlThread的私有变量被传完之后构析了?我之前一直以为emit 的参数是不会出enit所在的函数的作用域的。谢谢啊,我再看看。 (2016-12-07 18:50)
要看是不是在同一个线程的,一般同一个线程是立即执行信号关联的槽函数,不同线程就要把槽函数的加到对应线程的事件循环中了。
#7 [curiosity 01-14 23:05]
LZ您好,我最近也在做一个多线程编程的题目,主要内容是我有一个串口接收线程,一个读取相机图像的线程,还有一个用来处理这两个线程传过来的数据的线程,叫做处理线程。
我想问一下到底应该怎么协调好这三个线程的同步关系,因为我在处理线程中要进行循环处理,并且是要在完整接收到相机图像和串口数据之后再进行处理,
如果用信号槽给这个处理线程发信号的话,需要考虑同步的问题,因为我这个处理线程可能比较慢,如果处理线程在没处理完之前串口线程和相机线程又发过来信号的话,这个信号是会阻塞的吗?但其实我不想阻塞,因为的处理线程的目的是想时刻处理最新的数据,即最好处理线程运行完直接又取一个最新的串口线程和相机线程的数据继续处理,这个应该怎么弄呢?
我觉得您的项目跟我的好像还比较像,所以想问一下您,多谢!
#8 回 curiosity 的帖子 [liruigood 02-12 16:07]
curiosity:LZ您好,我最近也在做一个多线程编程的题目,主要内容是我有一个串口接收线程,一个读取相机图像的线程,还有一个用来处理这两个线程传过来的数据的线程,叫做处理线程。
我想问一下到底应该怎么协调好这三个线程的同步关系,因为我在处理线程中要进行循环处理,并且是要在完整接 .. (2017-01-14 23:05)
抱歉,假期回家很长时间没上论坛了,也没注意到消息。你现在做的怎么样了?你说的很对,除了用信号与槽的机制,你还可以用全局变量在线程之间传值,但是得注意线程安全。
#9 [哥依然潇洒 02-14 12:54]
楼主啊,你这个多数据处理线程是嵌入式的吗,为什么我的仅开启一个线程,就会黑屏啊(找的一个示例代码。开启arm板第一次点击开启子线程,屏幕黑屏,但是qdebug能正常打印东西,即程序是没死的,就是黑屏了) 能不能指点一二
#10 [哥依然潇洒 02-14 14:32]
楼主啊,你这个多数据处理线程是嵌入式的吗,为什么我的仅开启一个线程,就会黑屏啊(找的一个示例代码。开启arm板第一次点击开启子线程,屏幕黑屏,但是qdebug能正常打印东西,即程序是没死的,就是黑屏了) 能不能指点一二