dispatch_apply

2 篇文章 0 订阅
1 篇文章 0 订阅

dispatch_apply,作用是把指定次数的block添加到queue中,第一个参数是迭代次数,第二个是所在队列,一般为全局队列、 第三个是当前索引。

dispatch_apply 是同步函数,会阻塞当前线程知道所有的循环迭代完成,当提交到并发queue是,循环迭代的顺序是不确定的。



dispatch_apply(10, queue, ^(size_t index) {
20         NSLog(@"%zu", index);
21     });
22     NSLog(@"done");

输出结果随机 

用dispatch_apply模拟for循环


 6     NSArray *array = @[@"a", @"b", @"c", @"d", @"e", @"f", @"g", @"h", @"i", @"j"];
 9     dispatch_queue_t queue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0);
 dispatch_apply([array count], queue, ^(size_t index) {
13         NSLog(@"%zu: %@", index, [array objectAtIndex:index]);
14     });
15     NSLog(@"done");


输出结果:
  2016-02-25 19:37:17.308 dispatch_apply测试[3010:167871] 0: a
20      2016-02-25 19:37:17.308 dispatch_apply测试[3010:167956] 1: b
21      2016-02-25 19:37:17.308 dispatch_apply测试[3010:167957] 3: d
22      2016-02-25 19:37:17.308 dispatch_apply测试[3010:167871] 4: e
23      2016-02-25 19:37:17.309 dispatch_apply测试[3010:167957] 6: g
24      2016-02-25 19:37:17.309 dispatch_apply测试[3010:167871] 7: h
25      2016-02-25 19:37:17.309 dispatch_apply测试[3010:167957] 8: i
26      2016-02-25 19:37:17.309 dispatch_apply测试[3010:167871] 9: j
27      2016-02-25 19:37:17.308 dispatch_apply测试[3010:167956] 5: f
28      2016-02-25 19:37:17.308 dispatch_apply测试[3010:167955] 2: c
29      *  !!!因为在Global Dispatch Queue中执行,所以各个处理的执行时间不定
30         但done一定会输出在最后的位置,因为dispatch_apply函数会等待所以的处理结束









  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值