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