社区
Qt
帖子详情
如何解决:A mutex must be unlocked in the same thread that locked it
hcaihao
2010-07-28 03:53:17
我有几个线程里面需要引用同一个QMutex,防止并发访问。因为设计需要点击停止的时候必须立即terminate这几个线程,但是有可能其中某一个线程停止时正在lock这个mutex,导致下次点击开始的时候所有线程被阻塞。请问如何解决?
...全文
252
8
打赏
收藏
如何解决:A mutex must be unlocked in the same thread that locked it
我有几个线程里面需要引用同一个QMutex,防止并发访问。因为设计需要点击停止的时候必须立即terminate这几个线程,但是有可能其中某一个线程停止时正在lock这个mutex,导致下次点击开始的时候所有线程被阻塞。请问如何解决?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
8 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
hcaihao
2010-07-30
打赏
举报
回复
你说的是哪个示例,我去看看,不明白为什么qt没有suspend和resume
lefttime
2010-07-29
打赏
举报
回复
[Quote=引用 5 楼 hcaihao 的回复:]
引用 4 楼 darkdong 的回复:
这个就是设计的问题了,既然用了多线程,就得想到如何能在最短时间内响应退出的请求。
比如将调用几十个方法放到循环里,每次循环开始判断是否应该退出
比如我在线程内调用LUA脚本,一个脚本执行完几十分钟过去了。我想点击停止的时候立即停止,这是很现实的需求。
[/Quote]
很现实的需求并不代表一定要用terminate哦, terminate可行, 但不适合这种线程再利用的情况~```
应该让线程保持进度是可控的状态, 这样就能实现你的需求, 你可以像Qt的Demos中一样加个volatile bool变量一样来控制线程的运行~·
dext
2010-07-29
打赏
举报
回复
LUA 脚本引擎应该有控制吧。
hcaihao
2010-07-28
打赏
举报
回复
[Quote=引用 4 楼 darkdong 的回复:]
这个就是设计的问题了,既然用了多线程,就得想到如何能在最短时间内响应退出的请求。
比如将调用几十个方法放到循环里,每次循环开始判断是否应该退出
[/Quote]
比如我在线程内调用LUA脚本,一个脚本执行完几十分钟过去了。我想点击停止的时候立即停止,这是很现实的需求。
巴依老爷
2010-07-28
打赏
举报
回复
这个就是设计的问题了,既然用了多线程,就得想到如何能在最短时间内响应退出的请求。
比如将调用几十个方法放到循环里,每次循环开始判断是否应该退出
hcaihao
2010-07-28
打赏
举报
回复
[Quote=引用 2 楼 darkdong 的回复:]
这就是为什么不提倡使用terminate的原因,你应该让线程"自然"的结束
[/Quote]
比如线程内要依次调用几十个方法,如果要让他自然结束,难道每个方法内都去判断条件位以便返回最终退出线程?不太现实啊。
巴依老爷
2010-07-28
打赏
举报
回复
这就是为什么不提倡使用terminate的原因,你应该让线程"自然"的结束
tingsking18
2010-07-28
打赏
举报
回复
你在一个线程里lock这个mutex,却想在另外一个线程来释放,嘿嘿。这样好像不行
optee系统开发精讲
optee os中密码学函数的支持 optee os中的线程调度 CA/TA的开发模型 optee os中的service optee os中的 PTA optee os中的 secure driver optee os中的 Early TA optee中spin
lock
的实现原理详解 optee中
mutex
的实现...
Q
Mutex
“A
mutex
must be un
lock
ed
in the same
thread
that
lock
ed
it”
解决
A
mutex
must be un
lock
ed
in the same
thread
that
lock
ed
it; 原因可能有二: 1.创建Q
Mutex
不在当前线程; 2.QWaitCondition::wait 调用前没有调用Q
Mutex
::
lock
;
解决
方法: 1.在run函数...
Qt多线程编程总结(二)——Q
Mutex
Q
Mutex
类提供的是线程之间的访问顺序化。 Q
Mutex
的目的是保护一个对象、数据结构或者代码段,...且不能添上sleep()函数,否则提示"A
mutex
must be un
lock
ed
in the same
thread
that
lock
ed
it."的运行错误。
android bionic
mutex
分析
1. 先从
mutex
的构造开始 /* * Simple
mutex
class. The implementation is system-dependent.... * The
mutex
must be un
lock
ed
by the
thread
that
lock
ed
it. They are not * recursive, i.e. the same
thread
can
Mutex
::Auto
lock
引申的学习
Mutex
::Auto
lock
Android源码里面看到一个类,很简短,但稍微挖一挖,内容还蛮多。但首先理解需要几个知识点的优先掌握:
Mutex
.h Condition.h memory 首先找到
Mutex
.h,在/system/core/include/utils/
Mutex
.h...
Qt
16,213
社区成员
26,593
社区内容
发帖
与我相关
我的任务
Qt
Qt 是一个跨平台应用程序框架。通过使用 Qt,您可以一次性开发应用程序和用户界面,然后将其部署到多个桌面和嵌入式操作系统,而无需重复编写源代码。
复制链接
扫一扫
分享
社区描述
Qt 是一个跨平台应用程序框架。通过使用 Qt,您可以一次性开发应用程序和用户界面,然后将其部署到多个桌面和嵌入式操作系统,而无需重复编写源代码。
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章