在什么样的情况下需要设置线程异步取消

凤鸣千里天地动 2014-02-16 10:15:54
今天在看一个仿qq客户端的程序不太理解。
他在写server端的 用户登录 模块时,将线程设置为可取消,异步取消,也就是PTHREAD_CANCEL_ASYNCHRONOUS。
这么写是必须的吗,什么时候需要设置成异步取消呢,如果异步取消,已经申请的资源怎么办。
...全文
226 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
引用 4 楼 jingzhishen 的回复:
1:thread默认是不可以取消的 2:没有必要设置异步取消。同步也是可以的。但是有这样一种情况,就是登陆可能花费的时间比较长(网路不好等原因),而用户这个时候不想登陆的,那么其就可以取消登陆。那么这个时候就可能会用到线程取消了
奥,谢谢
  • 打赏
  • 举报
回复
引用 5 楼 luoyunjin 的回复:
线程在退出时不可以调用线程清理处理程序吗
可以啊
  • 打赏
  • 举报
回复
引用 2 楼 feiyinzilgd 的回复:
建议LZ先看下关于pthread_cancel 里面讲的很清楚关于线程取消的理论。 说白了,线程取消就是希望某个线程结束。如果接收线程处理的话,相当于掉pthread_exit()。 一般来说线程启动一方面消耗资源,需要CPU给时间片来执行该线程,另一方面,线程里面会锁住一些资源, 等等。。。 就需要咱们去取消那些不用的废弃的线程。
线程不本来就是可取消的吗,还用设置可取消。 关于异步取消,如果我想设计一个qq登录的程序,必须要设置异步取消吗,同步不行么
luoyunjin 2014-03-21
  • 打赏
  • 举报
回复
线程在退出时不可以调用线程清理处理程序吗
静之深 2014-03-21
  • 打赏
  • 举报
回复
1:thread默认是不可以取消的 2:没有必要设置异步取消。同步也是可以的。但是有这样一种情况,就是登陆可能花费的时间比较长(网路不好等原因),而用户这个时候不想登陆的,那么其就可以取消登陆。那么这个时候就可能会用到线程取消了
谭海燕 2014-02-16
  • 打赏
  • 举报
回复
建议LZ先看下关于pthread_cancel 里面讲的很清楚关于线程取消的理论。 说白了,线程取消就是希望某个线程结束。如果接收线程处理的话,相当于掉pthread_exit()。 一般来说线程启动一方面消耗资源,需要CPU给时间片来执行该线程,另一方面,线程里面会锁住一些资源, 等等。。。 就需要咱们去取消那些不用的废弃的线程。

23,114

社区成员

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

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