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);

        });

    });

运行结果:

GCD之Apply

 

 

此时可以看到:当dispatch queue为全局线程(并行)时输出不是按索引输出,未主线程队列时,按索引输出。


相关文章:

  • 2021-12-07
  • 2021-07-09
  • 2022-01-31
  • 2022-12-23
  • 2021-08-11
  • 2021-11-06
  • 2022-12-23
  • 2022-12-23
猜你喜欢
  • 2021-07-28
  • 2021-10-08
  • 2021-12-01
  • 2021-09-22
  • 2022-02-10
相关资源
相似解决方案