每次开启一个DISPATCH_QUEUE需要三四分钟。我需要一个按钮可以终止队列。怎么实现?
dispatch_sync(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_HIGH, 0), ^{
@synchronized(self)
{
for (int i = 0; i < (4000); i++) {
(Some methods)
}
}
});
能否终止或取消此线程?
使用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];
}
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。