如何在iOS7中停止线程(由dispatch_queue_create创建)

时间:2014-05-28 13:52:39

标签: ios objective-c multithreading queue grand-central-dispatch

我在iOS应用中创建了这个帖子,我想阻止它:

dispatch_queue_t myDispatch = dispatch_queue_create("com.myqueue", DISPATCH_QUEUE_CONCURRENT);

其中的myDispatch线程分别调用dispatch_global_queue和dispatch_main_queue来执行繁重的操作并执行图形操作。 但是,响应应用程序中的用户操作可以被称为另一个使用与myDispatch非常相似的另一个队列的函数。如果myDispatch线程被终止,则没有问题,但是在执行myDispatch线程期间也会发生此调用,因此我的应用程序崩溃,因为两个线程都使用相同的数组。 有一种方法可以在终止之前停止或终止一个线程吗?我想杀死当前运行的线程并启动新线程。

2 个答案:

答案 0 :(得分:4)

如果你想取消/停止后台工作,你应该使用NSOperation,因为据我所知,一旦你用GCD发送一个块,你就会失去对它的控制。

答案 1 :(得分:0)

要取消GCD线程,您必须使用自己的原子标记。