2016-04-21 87 views

回答

0
  1. 如果使用GCD,调度的任务无论如何都不能停止。
  2. 但是,如果您尝试使用NSOperationQueue,那么可以停止当前未运行的任务。
  3. 如果您使用NSThread或pthread,我认为很难阻止他们没有额外的努力。
+0

我已经使用NSThread分离。 – Jeyanthu

+0

然后,我认为你应该在线程函数中添加类似while(true){if(shouldEnd){return;}}的逻辑。 shouldEnd变量应该像互斥体那样读取,以保护多线程 – user3349433

1

你的后台线程需要检查,看它是否已被取消,或者通过isCancelled方法...

if ([[NSThread currentThread] isCancelled]) { 
    // do cleanup here 
    [NSThread exit]; 
} 

,因为没有办法知道你不能杀线程外部线程可能处于什么状态,因此,杀死它会产生不确定的行为。