首页| 论坛| 消息

标题:qt线程通信
作者:王小才
日期:2015-12-28 22:37
内容:

代码如下
当由主线程调用InsertData()后,当前线程QserialProcess仅在1处循环,未进入2处
求指点
【注】忽略代码中的语法问题


#1 [王小才 12-29 21:29]
由于QList不是线程安全的数据结构
于是偿试做了以下的改动,暂时没有问题重现
【忽略语法问题】
class QserialProcess:QThread
{
QList dataQueue;
bool hasInsertCMD = false;
QMutex mutex;
void QserialProcess::run()
{
while (1)
{
// 1. do something
msleep(50);
if (hasInsertCMD)
{
msleep(50);
QMutexLocker lock(&mutex);
while (dataQueue.count > 0)
{
int tmpData = dataQueue.at(0);
// 2. process dataQuece
dataQueue.RemoveAt(0);
}
&nbsp ..
#2 [彩阳 12-29 21:34]

回复 发表
主题 版块