首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 移动开发 > QT开发 >

求Qt 在以次应用场景中使用线程或者异步或者其他实现方式的思路

2014-01-17 
求Qt 在以下应用场景中使用线程或者异步或者其他实现方式的思路现在在做一个程序,需要连接远程数据库,由于

求Qt 在以下应用场景中使用线程或者异步或者其他实现方式的思路
现在在做一个程序,需要连接远程数据库,由于远程数据库并不是特别稳定,所以经常会出现因长时间等待处理结果而造成gui界面假死现象。所以我在考虑是否使用线程或者异步来解决这个问题。

现在思路如下:例如登录过程
当点击登录按钮后,gui出现正在登录的字样以及loading图标,同时后台去数据库取详细信息,当数据返回后,将数据返回到login界面,在做一步处理,报错或者登录成功之类。

问题就在这了。我已经如何处理这个逻辑?
同时,该程序每隔一段时间就会轮训数据库一次,发送最新入库的数据等

目前我的思路如下:
自定义一个消息队列,当有数据操作的时候,将数据(sql文)传入该队列里面,固定数据查询也是产生数据sql文放到该队列里面。遵循先进先出机制。(队列有固定长度)。
新启新的线程不停的处理队列里面的内容,处理完毕后发送处理结果发送到发布这条消息的类中,并删除该消息。

问题1:这样的思路是否能解决问题?有没有什么风险?
问题2:如何将结果返回到相对应的gui界面,或者怎么处理?
问题3:有没有其他思路解决?

ps:我之前都是做bs软件的,比较习惯ajax之类的回调函数。做c++经验不是很多,所以c++如何这个方面的处理?


[解决办法]
问题1:这样的思路是否能解决问题?有没有什么风险?
可以解决,很正常的做法,没什么风险,就是对线程同步等要有比较深入的理解

问题2:如何将结果返回到相对应的gui界面,或者怎么处理?
qt下吗,无疑是信号槽的方式了,线程将结果发送给gui槽函数,注意同步异步的区别,和memory的申请释放等

问题3:有没有其他思路解决?
已经是很正常的解决思路了。只是需要考虑一些队列消息是否可以重复等等问题,如正在固定数据查询(可能持续很久),是否需要在队列里再塞一个固定数据查询。这个需要结合你的具体应用和需求了

热点排行