2 developerwab developerWab 于 2013.07.09 16:25 提问

终止异步DISPATCH_QUEUE

每次开启一个DISPATCH_QUEUE需要三四分钟。我需要一个按钮可以终止队列。怎么实现?

dispatch_sync(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_HIGH, 0), ^{
        @synchronized(self)
        {
            for (int i = 0; i < (4000); i++) {
                         (Some methods)
            }
        }
});

能否终止或取消此线程?

1个回答

redCoral_
redCoral_   2013.07.09 16:59
已采纳

使用dispatch_sync阻塞了主线程

你应该用 NSOperationQueue

NSOperationQueue *_myQueue; //instance var

_myQueue = [[NSOperationQueue alloc] init]; //init it

_myQueue.suspended = (buttonPressed) ? YES : NO; //toggle it like you need

for (int i = 0; i < (4000); i++) {
   [_queue addOperationWithInvocation:NSInvocation for method to call];  
}
Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
GCD之dispatch queue深入浅出
iOS中多线程编程工具主要有:  NSThreadNSOperationGCD 这三种方法都简单易用,各有千秋.但无疑GCD是最有诱惑力的,因为其本身是apple为多核的并行运算提出的解决方案.虽然当前移动平台用双核的不多,但不影响GCD作为多线程编程的利器(ipad2已经是双核了,这无疑是一个趋势). http://www.cnblogs.com/scorpiozj/archi
深入理解dispatch_queue[举例子讲原理]-1
转自:http://www.cocoachina.com/ios/20151117/14225.html 文本由CocoaChina译者candeladiao(GitHub)翻译 作者:Mike Ash(Blog GitHub) 原文:Friday Q&A 2015-09-04: Let's Build dispatch_queue Grand Ce
GCD的同步异步串行并行、NSOperation和NSOperationQueue一级用dispatch_once实现单例
(1)GCD实现的同步异步、串行并行。 ——同步sync应用场景:用户登录,利用阻塞 ——串行异步应用场景:下载等耗时间的任务 [objc] view plain copy /**   *  因为是异步,所以开通了子线程,但是因为是串行队列,所以只需要开通1个子线程(2),它们在子线程中顺序执行。最常用。   */   -(vo
深入理解Dispatch Queue(一)
Dispatch Queues提供了一种简单的方式让我们在App中实现异步和并发。任务的概念:一个任务是我们的程序需要执行的一个独立的工作。我们可以通过将相应的代码放到一个函数或一个block中并将其添加到调度队列中来定义任务。可以将调度队列理解为一个管理我们提交过的任务的对象。调度队列遵循先入先出的规则,提交到队列中的任务总是以相同的顺序开始启动的。 GCD为我们提供了三种调度队列
js中的暂停和异步问题
除了Narrative JS,jwacs(Javascript With Advanced Continuation Support)  也致力于通过扩展JavaScript语法来避免编写让人头痛的异步调用的回调函数。用jwacs 实现的sleep,代码是这样: function sleep(msec) { var k = function_continuation; se
开启多线程退出后终止异步任务
AsyncTask.cancel()的结束问题 实际项目中有这么一个问题,用户进入详情界面,那么我们就要网络加载数据并展现在UI上,这个加载用线程或者异步。 这里就拿项目中统一用异步任务来获取网络数据把。 用户可能会有这么一个操作,它在一个商品(说说等)列表中,点击一个列表项,进入到相应的详情界面,这时候,我们会开启一个异步任务来获取网络数据,但是网络差的情况下, 用户可能就不愿意等了,立马
dispatch_queue
隔上一次写iPad app开发文章已经是10个月,那篇iPad app开发概述还不错,曾经成为了google关键字“iPad app 开发”搜索的第一位,可能是大牛们都太忙于赚app store的钱了,留下我这个小虾来写文章。这次的文章集中与iOS的多核编程和内存管理,为什么?因为iPad 2已经是双核CPU了!虽然iPad 1的应用已经不慢了,但大家完全可以使用苹果的多核编程框架来写出更加res
dispatch_group和dispatch_barrier的用法
前天被人问到使用GCD做依赖的用法,结果完全答不上来,下来之后就搜索了一下GCD的高级用法,发现自己对于GCD的掌握还很浅,像dispatch_group和dispatch_barrier的用法居然都不知道。 dispatch_group就是用来解决依赖问题的,或者说是用来解决并发序列的顺序执行问题。主要有几个方法,分别是: dispatch_group_t dispatch_group_crea
GCD学习(七) dispatch_apply
dispathc_apply 是dispatch_sync 和dispatch_group的关联API.它以指定的次数将指定的Block加入到指定的队列中。并等待队列中操作全部完成.
WCF分布式开发常见错误(13):The transaction under which this method call was executing ,此方法调用的事务被异步中断
Posted on 2009-05-30 22:32 Frank Xu Lei 阅读(400) 评论(0)  编辑 收藏 网摘 所属分类: WCF分布式开发常见错误 <!--<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"xmlns:dc="http://purl.org/d