请问:如何优雅的结束一个正在等待锁的线程?

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() 如何?

23,216

社区成员

发帖
与我相关
我的任务
社区描述
Linux/Unix社区 应用程序开发区
社区管理员
  • 应用程序开发区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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