GCD之Apply

简介:

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为全局线程(并行)时输出不是按索引输出,未主线程队列时,按索引输出。


相关文章
|
7月前
|
Python
apply函数的用法
apply是pandas处理数据经常用到的函数。我们可以用DataFrame的apply函数实现对多列、多行的操作。可通过axis设置参数,设为1是对列进行操作,参数axis设为0是对行操作。apply经常跟lambda一起使用,非常方便,大大提高了效率。
|
5天前
|
前端开发 C++
C++11实用技术(三)std::future、std::promise、std::packaged_task、async
C++11实用技术(三)std::future、std::promise、std::packaged_task、async
35 0
|
5天前
|
JavaScript 前端开发
call函数和apply函数的区别
call函数和apply函数的区别
24 0
|
8月前
|
C++
C++17使用std::apply和fold expression对tuple进行遍历
C++17使用std::apply和fold expression对std::tuple进行遍历
61 0
|
11月前
|
算法
初学算法之---pta fun with numbers
初学算法之---pta fun with numbers
LeetCode 1342. 将数字变成 0 的操作次数 Number of Steps to Reduce a Number to Zero
LeetCode 1342. 将数字变成 0 的操作次数 Number of Steps to Reduce a Number to Zero
|
Serverless 索引
apply | R中函数的简单循环
R中的apply族函数是一组R向量化函数,允许通过数组执行复杂的任务,避免使用for循环。
217 0
HDU-1016,Prime Ring Problem(DFS+素数)
HDU-1016,Prime Ring Problem(DFS+素数)
|
机器学习/深度学习
3045 Lcm与Gcd构造
已知: gcd(a,b) = n lcm(a,b) = m 求min(a,b)是多少 通过gcd的了解我们可以知道,两个数a == k1 * n以及b == k2 * n并且gcd(k1,k2) == 1 ab == n * m m == a * b/n ab == k1 * k2 * n * n 于是可以得到 m == k1 * k2 * n 将n除到左边,可以得出m/n == k1 * k2 于是k1 和 k2 都是 m / n的因子 这样就可以以根号的复杂度找出这两个因子,并判断k1 和 k2 是否是互质的 a + b == (k1 + k2 ) * n 所以说代码:
96 0
1447. 最简分数 : 简单数论运用题(求 gcd 几种方式)
1447. 最简分数 : 简单数论运用题(求 gcd 几种方式)