如何让QT编写的线程等待多个信号量?

牧童吃五谷 2020-09-15 09:35:40
采用VC++编写程序,有一个函数是WaitForMultipleObjects(...)来等待多个信号量,不知道QT是否有类似的等待多个QSemaphore信号量的函数?

如果没有这个等待多个信号量的函数,那么线程如果等待的是别人网络发送过来的消息,那么就可能永远等待下去,程序在想退出的时候都无法退出?
...全文
18473 3 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
牧童吃五谷 2020-10-06
  • 打赏
  • 举报
回复
现在自己解决了部分情况,那就是增加了全局变量,如果是要求退出线程,那么就设置这个全局变量为1,然后自己发出退出线程的命令; 在等待信号量的线程中,在信号量发信号后,立即判断是否这个全局变量为1,如果为1,就退出线程。 这样的编程思路的缺点就是这个等待信号量必须是我自己程序可以设置发信号的,如果自己不能设置这个信号量(如某些特殊情况下别人提供的库函数),则可能无法解决。
牧童吃五谷 2020-10-06
  • 打赏
  • 举报
回复
这样就是要求每个信号量就需要建立一个等待线程的,然后还有一个主线程,这样程序的线程就太多了
十八道胡同 2020-09-18
  • 打赏
  • 举报
回复
是否可以换个思路。多个信号量触发多个槽,这些槽操作同一个线程安全的队列。 另外一个线程循环处理队列里面的数据。

16,816

社区成员

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

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