我在iOS应用中创建了这个帖子,我想阻止它:
dispatch_queue_t myDispatch = dispatch_queue_create("com.myqueue", DISPATCH_QUEUE_CONCURRENT);
其中的myDispatch线程分别调用dispatch_global_queue和dispatch_main_queue来执行繁重的操作并执行图形操作。 但是,响应应用程序中的用户操作可以被称为另一个使用与myDispatch非常相似的另一个队列的函数。如果myDispatch线程被终止,则没有问题,但是在执行myDispatch线程期间也会发生此调用,因此我的应用程序崩溃,因为两个线程都使用相同的数组。 有一种方法可以在终止之前停止或终止一个线程吗?我想杀死当前运行的线程并启动新线程。
答案 0 :(得分:4)
如果你想取消/停止后台工作,你应该使用NSOperation
,因为据我所知,一旦你用GCD
发送一个块,你就会失去对它的控制。
答案 1 :(得分:0)
要取消GCD线程,您必须使用自己的原子标记。