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

振星 2014-01-09 09:30:28
现在在做一个程序,需要连接远程数据库,由于远程数据库并不是特别稳定,所以经常会出现因长时间等待处理结果而造成gui界面假死现象。所以我在考虑是否使用线程或者异步来解决这个问题。

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

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

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

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

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

...全文
168 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
accsoar 2014-01-09
  • 打赏
  • 举报
回复
问题1:这样的思路是否能解决问题?有没有什么风险? 可以解决,很正常的做法,没什么风险,就是对线程同步等要有比较深入的理解 问题2:如何将结果返回到相对应的gui界面,或者怎么处理? qt下吗,无疑是信号槽的方式了,线程将结果发送给gui槽函数,注意同步异步的区别,和memory的申请释放等 问题3:有没有其他思路解决? 已经是很正常的解决思路了。只是需要考虑一些队列消息是否可以重复等等问题,如正在固定数据查询(可能持续很久),是否需要在队列里再塞一个固定数据查询。这个需要结合你的具体应用和需求了

16,203

社区成员

发帖
与我相关
我的任务
社区描述
Qt 是一个跨平台应用程序框架。通过使用 Qt,您可以一次性开发应用程序和用户界面,然后将其部署到多个桌面和嵌入式操作系统,而无需重复编写源代码。
社区管理员
  • Qt
  • 亭台六七座
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧