本文共 637 字,大约阅读时间需要 2 分钟。
dispatch_apply函数是dispatch_sync函数和dispatch_group的结合体。该函数将按指定的次数将指定的block追加到指定的dispatch queue中,并等待全部处理结束。
指定的次数将指定的block追加到指定的dispatch queue中,即循环,和dispatch_group类似,此处循环要根据dispatch queue来判读是并行循环还是串行循环。等待全部处理结束,即同步,和dispatch_sync 一样。
下面看代码及运行结果来验证:
dispatch_queue_t queue= dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0); dispatch_apply(5, queue, ^(size_t i) { NSLog(@"%ld",i); }); NSLog(@"%d",88); //不死锁 dispatch_async(queue, ^{ dispatch_apply(5, dispatch_get_main_queue(), ^(size_t i) { NSLog(@"%ld",i); }); });
运行结果:
此时可以看到:当dispatch queue为全局线程(并行)时输出不是按索引输出,未主线程队列时,按索引输出。
转载地址:http://udjix.baihongyu.com/