• 4772阅读
  • 3回复

[提问]QT多线程的使用问题 [复制链接]

上一主题 下一主题
离线lswcym
 

只看楼主 正序阅读 楼主  发表于: 2015-10-15
最近做下位机dsp将采样数据上传,然后用qt上位机显示实时曲线的项目,我把我遇到的问题抽象成如下:
如果我定义一个全局的QByteArray buffer,一个线程处理串口发来的数据(也就是生产者producer),并写到这个buffer里;另一个也就是GUI主线程(可以看成是消费者customer),把这个buffer里的数据取出画成曲线,为了使两线程不冲突,我考虑过用QSemaphore或QWaitCondition;但我突然想到可不可以这样:
假设我首先定义了一个全局的QQueue<char>,每次生产者的数据可以追加到队尾,然后消费者(也就是画曲线的线程)从队头取出数据并将其删除(用过了),这样我就不需要利用QWaitCondition将某一线程阻塞了,直接判断QQueue的IsEmpty来决定是否将画图的线程挂起就行了,总的来说就不用线程锁这一类机制了,两个线程同时操作这一个buffer,第一个在队尾写,第二个在队头读,谁也不影响谁,
这就是大概的意思,还求高人指点
离线lswcym

只看该作者 3楼 发表于: 2015-10-16
回 johnyork 的帖子
johnyork:QQueue和QList的说明中并没有明确说明这些操作是线程安全的(thread safe),so,估计你还是不得不用线程同步来保护你的数据安全。 (2015-10-15 22:37) 

恩谢啦!
离线johnyork

只看该作者 2楼 发表于: 2015-10-15
QQueue和QList的说明中并没有明确说明这些操作是线程安全的(thread safe),so,估计你还是不得不用线程同步来保护你的数据安全。
离线hp_201111

只看该作者 1楼 发表于: 2015-10-15
重要的事要说三遍,LZ还少说一遍。帮顶。 等大神回帖。
快速回复
限100 字节
 
上一个 下一个