社区
Linux/Unix社区
帖子详情
请问:如何优雅的结束一个正在等待锁的线程?
lunat
2012-03-03 01:35:47
某个操作(单独线程)需要特定共享资源,因为此共享资源已被其它线程占用(加锁),所以此操作被阻塞,而此时用户要求取消此操作,请问如何优雅的结束该操作线程?
...全文
282
7
打赏
收藏
请问:如何优雅的结束一个正在等待锁的线程?
某个操作(单独线程)需要特定共享资源,因为此共享资源已被其它线程占用(加锁),所以此操作被阻塞,而此时用户要求取消此操作,请问如何优雅的结束该操作线程?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
7 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
qq120848369
2012-03-04
打赏
举报
回复
没有办法,锁等待不是取消点,重新设计你的程序让等待发生在条件变量上,条件变量可以被唤醒,通过设置标志位可以实现退出.
lunat
2012-03-03
打赏
举报
回复
这个……更不敢用了……如果这个线程已经获得了锁 强制杀死的话 就死锁了……
昵称很不好取
2012-03-03
打赏
举报
回复
pthread_kill?
lunat
2012-03-03
打赏
举报
回复
在线程里面可以用pthread_testcancel测试取消点,但是处于资源锁等待状态时无法测试取消点……
justkk
2012-03-03
打赏
举报
回复
我没怎么写过线程的程序
记得好像可以自己添加取消点的
lunat
2012-03-03
打赏
举报
回复
谢谢justkk!
pthread_mutex_lock函数不是一个取消点;
用信号的话感觉不是很好控制,因为发送的时候不知道线程执行到什么地方了……
justkk
2012-03-03
打赏
举报
回复
给这个线程发送一个信号
或者调用pthread_cancel() 如何?
Qt基础之十五:
优雅
地
结束
线程
本文探讨了如何在Qt中
优雅
地
结束
线程
,避免‘QThread: Destroyed while thread is still running’的错误。介绍了QMutex互斥
锁
配合bool成员变量、requestInterruption()+isInterruptionRequested()、Event以及std::atomic四种方法,并分析了在不同场景下的适用性和优缺点。强调在不确定场景下,为保证代码正确性,可以使用加
锁
策略。
ExecutorService
等待
线程
完成后
优雅
结束
本文探讨了在Java中
等待
线程
完成执行的多种策略,包括使用ExecutorService的awaitTermination方法,CountDownLatch,invokeAll方法,以及ExecutorCompletionService。每种方法都有其适用场景,如CountDownLatch适用于通知一组操作的完成,而ExecutorCompletionService则适用于尽快获取任务结果。
python创建
线程
和
结束
线程
本文介绍Python中
线程
的创建、
结束
及安全管理方法,涵盖threading模块、
线程
池、
锁
、条件变量、队列通信、定时
结束
和事件
等待
机制,强调异常处理与
线程
同步,提升多
线程
程序的稳定性与性能。
qt
等待
线程
结束
_QT
线程
优雅
退出
本文介绍了如何在Qt5中使用isInterruptionRequested()和m_mutex控制
线程
,包括
线程
启动、暂停、继续和
结束
的详细步骤。重点讲解了中断请求、
锁
机制在调度中的应用,以及
线程
结束
时的注意事项。
Qt
优雅
地
结束
线程
在Qt编程中,不恰当的
线程
中止可能导致未知错误,如QThread: Destroyed while thread is still running。本文介绍了两种
优雅
地
结束
线程
的方法:一是使用QMutex互斥
锁
和bool成员变量,确保共享数据安全;二是利用Qt5的requestInterruption()和isInterruptionRequested()接口。这两种方式都强调了在资源竞争时确保
线程
安全退出的重要性。
Linux/Unix社区
23,223
社区成员
74,536
社区内容
发帖
与我相关
我的任务
Linux/Unix社区
Linux/Unix社区 应用程序开发区
复制链接
扫一扫
分享
社区描述
Linux/Unix社区 应用程序开发区
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章