• 3195阅读
  • 1回复

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

上一主题 下一主题
离线lswcym
 

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

只看该作者 1楼 发表于: 2015-10-16
其实是可以的,你的想法有点像想做一个内存池之类的,不过最好还是用线程锁锁一下,我最近做的一个socket的demo就类似你现在这个想法要做的东西,你可以下载demo下来看一下,当然,要是赞助一下,直接给你源码学习哦,亲
快速回复
限100 字节
 
上一个 下一个