当前位置: 代码迷 >> QT开发 >> QT线程同步,该怎么解决
  详细解决方案

QT线程同步,该怎么解决

热度:187   发布时间:2016-04-25 05:10:03.0
QT线程同步
问题:在分线程中发出的数出现重复现象,每个数被发送了两次。
用QReadWriteLock 和QMutex 问题同样。
C/C++ code
全局变量:QList <QString> m_zfList;//数据缓冲列表bool flag_start;//开始转发标志QReadWriteLock lock;QMutex mutex;主线程接收:if(flag_start)     {         mutex.lock();         m_zfList.push_back(m_dataNew.T);         mutex.unlock()     };分线程转发:while(flag_start)    {        char buf[25];        int b = 10;        mutex.lock();        if(!m_zfList.isEmpty())        {              float temp = m_zfList.takeLast();                          gcvt(temp,b,buf);                           myCom_288->write(buf);                 }                mutex.unlock();        }

求教,该如何解决?谢谢!

------解决方案--------------------
因为你的次线程takeLast之后,主线程又往列表里push_back了!
------解决方案--------------------
m_zfList.push_back(m_dataNew.T);

是不是 m_dataNew.T 这个变量的处理问题啊, 重复的被加入到列表中了。
  相关解决方案