可以这样用QList吗?解决办法
发布时间:2010-05-30 21:32:30 文章来源:www.iduyao.cn 采编人员:星星草
可以这样用QList吗?
可以这样用QList吗?
功能:上位机一边在主线程中从usb接收数据,一边在分线程中从串口转发出数据
定义了全局QList变量
在主线程中,接收USB数据, m_zfList.push_back(m_data)
在转发线程中发送:
char buf[25];
int b = 10;
if(!m_zfList.isEmpty())
{
float temp = m_zfList.takeLast();
gcvt(temp,b,buf);
myCom_288->write(buf);
}
点击开始发送按钮,开始接收数据并同时转发,请问这样做可以吗?
------解决方案--------------------
疑问:接收数据和转发数据都是无限循环吗?
建议:
使用QMutex对全局QList变量进行保护
------解决方案--------------------
楼有没有想过这种情况:
1.你接收数据就在主线程把数据插入到List最后面。在分线程取出list最后的数据进行转发。如果某些情况导致主线程与分线程“不同步了”,会不会出现永远都会有这么几个数据在List头上没法转发。就像是压在栈底。
2.参考楼上的建议。主线程边读取分线程边修改会出现问题。
个人见解……
------解决方案--------------------
楼主可以用QT里的信号量来解决, 这个与“生产者消费者”问题有些类似。 这样做可以通过按键控制线程的循环读,然后在分线程中判断信号量,再往外发。 这样在发之前,写进qlist里的东西也不会被冲洗。
信号量类是QSemaphore类。
------解决方案--------------------
个人觉得takeFirst()比较好。
------解决方案--------------------
如果用互斥锁的话, 肯能会丢失数据吧?
------解决方案--------------------
友情提示:
信息收集于互联网,如果您发现错误或造成侵权,请及时通知本站更正或删除,具体联系方式见页面底部联系我们,谢谢。
其他相似内容:
-
Qt Creator 2.1 Beta 2 和Qt 4.7.1 发布
转载:http://www.cmdn.net/news/1148
诺基亚发布了Qt框架的跨平台开发环境(IDE) –Qt Cre...
-
Qt菜单的显示问题
我的是在ubuntu11.10虚拟机上运行的qt creator4,现在刚入门,按照http://www.yafeilinux.com/?p=30的例子添加菜单...
-
'make' 不是内部或外部命令,也不是可运行的程序或批处理文件?
根据HTML code
http://v.youku.com/v_show/id_XMTA1NDEzODUy.html
的...
-
visual studio 2010编译qt的demo无法运行,求教。
安装的qt-win-opensource-4.8.0-vs2010.exe和qt-vs-addin-1.1.10.exe
然后想运行...
-
QT,'HANDLE'没有命名的一个类型
网上说QT是,一处编写,处处编译,可是我在windows下写好了串口通讯程序,在linux下编译时,却提示'HANDLE'...
-
关于QT的授权
一直都没搞懂QT的商业授权是怎么回事,请问如果我用QT在电视机机顶盒上开发一款基于QT的播放器,如果我没有获得商业授...
-
有关QTable制作表格保存问题
我使用的是QT2,需要制作一个表格,然后输入数据后保存。我源码在以下网址,set.zip压缩包中http://www.qt...
-
Qt怎样禁止用户最大化窗口
用Qt写一个窗口,如果继承QDialog,那窗口就只有关闭按钮,如果继承QWidget,那么就有关闭,最大化,最小化三个按...
-
QT4.4.3版本窗体透明后界面失去焦点无法响应键盘事件
用的是Qt4.4.3版本,窗体透明的方法如下:
C/C++ code
QPalette pal = pale...
-
QT4下载到开发板的问题
友善的2440开发板,按照一些教程装好了QT4在Linux下的开发环境。
用NFS启动开发板,把arm版编译出来的应用程...