社区
Qt
帖子详情
如何让QT编写的线程等待多个信号量?
牧童吃五谷
2020-09-15 09:35:40
采用VC++编写程序,有一个函数是WaitForMultipleObjects(...)来等待多个信号量,不知道QT是否有类似的等待多个QSemaphore信号量的函数?
如果没有这个等待多个信号量的函数,那么线程如果等待的是别人网络发送过来的消息,那么就可能永远等待下去,程序在想退出的时候都无法退出?
...全文
18551
3
打赏
收藏
如何让QT编写的线程等待多个信号量?
采用VC++编写程序,有一个函数是WaitForMultipleObjects(...)来等待多个信号量,不知道QT是否有类似的等待多个QSemaphore信号量的函数? 如果没有这个等待多个信号量的函数,那么线程如果等待的是别人网络发送过来的消息,那么就可能永远等待下去,程序在想退出的时候都无法退出?
复制链接
扫一扫
分享
举报
写回复
配置赞助广告
用AI写文章
3 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
牧童吃五谷
2020-10-06
打赏
举报
回复
现在自己解决了部分情况,那就是增加了全局变量,如果是要求退出线程,那么就设置这个全局变量为1,然后自己发出退出线程的命令; 在等待信号量的线程中,在信号量发信号后,立即判断是否这个全局变量为1,如果为1,就退出线程。 这样的编程思路的缺点就是这个等待信号量必须是我自己程序可以设置发信号的,如果自己不能设置这个信号量(如某些特殊情况下别人提供的库函数),则可能无法解决。
牧童吃五谷
2020-10-06
打赏
举报
回复
这样就是要求每个信号量就需要建立一个等待线程的,然后还有一个主线程,这样程序的线程就太多了
十八道胡同
2020-09-18
打赏
举报
回复
是否可以换个思路。多个信号量触发多个槽,这些槽操作同一个线程安全的队列。 另外一个线程循环处理队列里面的数据。
【
Qt
】
Qt
线程
同步之QSemaphore
信号量
Qt
—
线程
同步之QSemaphore 文章目录
Qt
—
线程
同步之QSemaphore一、简介二、成员函数API(2-1)获取n个资源(2-2)释放n个资源(2-3)获取可用资源的数量(2-4)尝试获取n个资源(2-5)在一段时间内尝试获取n个资源三、使用示例(3-1)全局变量(3-2)Producer生产者类(3-3)Consumer消费者类(3-4)main函数 一、简介
信号量
是互斥锁的泛化。一个互斥的对象只能被锁定一次,但是可以多次获取一个
信号量
。
信号量
通常用于:保护一定数量的相同资源。 二、成员
Qt
线程
互斥量 读写锁 条件
等待
信号量
Qt
线程
1、
Qt
线程
介绍
Qt
程序默认只有一个
线程
,而该
线程
要时刻响应界面,所以
Qt
中设计了信号和槽机制,当执行一个操作时,界面会发出信号,然后槽函数响应并执行,然后再返回界面,当执行一个耗时较长的操作时,界面会卡住。 所有当需要执行耗时较操作时,更适合让新的
线程
去完成。 2、
QT
hread类
Qt
中提供了一个
线程
类,所以在
Qt
中使用
线程
非常方便。 该类无法指定入口函数,需要继承该类,然后覆盖run函数,作为
线程
的入口函数。 start函数负责启动
线程
,当它调用后,run函数就开始执行。 注意:一旦从ru
Qt
(19)【
Qt
线程
安全 | 互斥锁QMutex & QMutexLocker | 条件变量 |
信号量
】
Qt
提供了几种关键的同步机制,包括互斥锁(QMutex)及其自动管理助手QMutexLocker,用于确保资源互斥访问;条件变量,用于
线程
间的协调与
等待
/唤醒机制;以及
信号量
,用于控制对资源的并发访问数。这些工具共同协作,帮助开发者避免数据竞争和死锁,实现
线程
间的安全交互。
【
Qt
线程
】——
Qt
线程
详解
Qt
线程
详解
QT
基础篇(12)
QT
5多
线程
在任何一门语言中,多
线程
都是一个相对其他方面比较重要的点,这里面的知识体系很庞大,同步和异步之间的处理方式,以及IO多路复用等等各种进行性能优化的方面,在往上层一点我们不可能一直进行系统层次的调用,这样太费时间也太麻烦,就到设计模式这里,比如反应器(Reactor)模式,再者多
线程
对代码的敏感程度较高,很对细微的改变可能会带来意向不到的效果,这更要求我们对于我们写的代码有更深次的理解,不仅仅是代码本身,还要求代码执行阶段锁遇到的各种问题,这就非常考验一个程序员的功底。
Qt
21,503
社区成员
26,693
社区内容
发帖
与我相关
我的任务
Qt
Qt 是一个跨平台应用程序框架。通过使用 Qt,您可以一次性开发应用程序和用户界面,然后将其部署到多个桌面和嵌入式操作系统,而无需重复编写源代码。
复制链接
扫一扫
分享
社区描述
Qt 是一个跨平台应用程序框架。通过使用 Qt,您可以一次性开发应用程序和用户界面,然后将其部署到多个桌面和嵌入式操作系统,而无需重复编写源代码。
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章