社区
Linux/Unix社区
帖子详情
请问:如何优雅的结束一个正在等待锁的线程?
lunat
2012-03-03 01:35:47
某个操作(单独线程)需要特定共享资源,因为此共享资源已被其它线程占用(加锁),所以此操作被阻塞,而此时用户要求取消此操作,请问如何优雅的结束该操作线程?
...全文
212
7
打赏
收藏
请问:如何优雅的结束一个正在等待锁的线程?
某个操作(单独线程)需要特定共享资源,因为此共享资源已被其它线程占用(加锁),所以此操作被阻塞,而此时用户要求取消此操作,请问如何优雅的结束该操作线程?
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用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() 如何?
怎么终止
一个
线程
?如何
优雅
地终止
线程
终止
线程
是
一个
重要的多
线程
编程任务,但要小心处理,以确保
线程
可以
优雅
地退出而不会导致资源泄漏或不稳定的应用程序。在终止
线程
时,确保进行适当的资源清理,释放占用的资源,以避免资源泄漏。另外,要小心处理
线程
之间的共享资源,以避免
线程
冲突和数据不一致性。总之,终止
线程
是多
线程
编程中的关键任务,应该根据具体情况选择合适的方法,确保
线程
可以安全、
优雅
地退出。
线程
在执行的过程中定期检查这个标志位,并在标志位变为true时退出。通常,最好的方式是让
线程
自行检查
一个
标志位,以决定何时退出。方法可以用于中断
线程
的执行。
Qt基础之十五:
优雅
地
结束
线程
如果
一个
线程
运行完成,就会
结束
。可很多情况并非这么简单,由于某种特殊原因,当
线程
还未执行完时,我们就想中止它。不恰当的中止往往会引起一些未知错误。比如:当关闭主界面的时候,很有可能次
线程
正在运行,这时,就会出现如下提示:这个问题在使用
线程
的过程中经常遇到,尤其是耗时操作。大多数情况下,当程序退出时,子
线程
也许会正常退出。这时,虽然抱着侥幸心理,但隐患依然存在,也许在极少数情况下,就会出现Crash。
如何
优雅
的停止
一个
线程
?
通过上面的介绍我们知道了,
线程
终止的主要两种方式,一种是interrupt一种是volatile,两种类似的地方都是通过标记来实现的,不过interrupt是中断信号传递,基于系统层次的,不受阻塞影响,而对于volatile,我们是利用其可见性而顶
一个
标记位标量,但是当出现阻塞等时无法进行及时的通知。在我们平时的开发中,我们视情况而定,并不是说必须使用interrupt,在一般情况下都是可以使用volatile的,但是这需要我们精确的掌握其中的场景。https。...
如何停止
一个
线程
?
优雅
终止和暴力终止对比
其一,使
线程
正常退出,也就是当run()方法完成后
线程
终止;其二,使用异常,通过抛出异常来终止操作。2、。使用stop和suspend及resume方法,当都是过期方法,非常容易引发
线程
安全问题,不推荐使用。// 通过本文分析,可以更好的去理解Java为什么会使用打标记的方式去停止
线程
,而不是立即让
线程
停止。这种方式,实际上是Java把终止的权力过渡给了程序员自己去处理,因为,只有写程序的人才知道
线程
应该什么时候停止,所以把终止
线程
的权力给程序员控制是合理的。
一个
线程
‘
优雅
‘
结束
另
一个
线程
优雅
这一说,其实就是在该
线程
即将
结束
时,让其做一部分收尾工作,最后再将其
结束
。 对于多
线程
情况下,
一个
线程
要
结束
其他
线程
需要保证,
结束
该
线程
的时候释放其运行的支援。于是stop()方法就不行,该方法会致使最后
线程
资源无法释放,可能永远无法释放。
优雅
即是 运用interruted()方法,来实现这一
优雅
。 那么给大家列个类举个例子 class TwoTerminna { private Thread monitor; public TwoTerminna() {
Linux/Unix社区
23,216
社区成员
74,539
社区内容
发帖
与我相关
我的任务
Linux/Unix社区
Linux/Unix社区 应用程序开发区
复制链接
扫一扫
分享
社区描述
Linux/Unix社区 应用程序开发区
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章