use*_*743 2 multithreading objective-c
我试图建立一个多线程应用程序.其中一个线程正在作为后台进行一些数据传输.现在这个线程在完成工作后自动自杀.不知怎的,我需要在另一个线程中杀死这个线程,以便立即停止它的工作.是否有任何api或方法来实现这一目标?
bbu*_*bum 11
总之,你不能.或者,更确切地说,你不应该.在任何情况下都不是,也不是.
当A杀死B时,线程A绝对没有办法知道线程B的确切状态.如果B持有任何锁定或在系统调用的中间或在A杀死它时调用系统框架,那么结果状态您的应用程序将是不确定的.
实际上 - 它在某种程度上是确定性的,因为你几乎可以保证在不久的将来某个时候会发生崩溃.
如果需要终止线程B,则需要以受控方式执行此操作.最常见的方法是拥有一个cancel可以设置/调用的标志或方法.然后,线程B需要定期检查此标志或检查方法是否已被调用,清除它正在做什么,然后退出.
也就是说,您将不得不修改线程B中的逻辑来支持它.
| 归档时间: |
|
| 查看次数: |
6657 次 |
| 最近记录: |