美文网首页
GCD中的apply

GCD中的apply

作者: developer_cp3 | 来源:发表于2017-05-22 16:50 被阅读56次

1.dispatch_apply函数作用:把一项任务提交到队列中多次执行,具体是串行执行还是并行执行由队列本身决定

注意:dispatch_apply不会立即返回,在执行完毕后才会返回,是同步的调用

size_t iterations: 执行的次数

dispatch_queue_t queue: 提交的队列

block 执行的任务

size_t block中每次任务执行的索引

如果在for循环中使用dispatch_async, 需要管理好线程的数量,否则会发生线程爆炸或死锁。

而且我们看到,其实很多操作都是在一个线程执行的,因为这个线程事情执行完了,空出来了,那么其他时间就有可能调用这个线程做一些事情这个时候我们调用,就会有一些预料不到的情况(虽然我还没遇到)。

这种情况下,系统会自己分配资源,管理队列,及队列里面执行事件的线程,更加安全,效率也会更高(肯定也会出现一些线程执行完一件事情,空下来待会儿执行队列里面的其他事件)。

如果我们 将DISPATCH_QUEUE_CONCURRENT 改成DISPATCH_QUEUE_SERIAL ,会发现,变成了串行执行,不同的是,事件顺序执行,而且都在一个线程(串行的嘛)。

我们后面的log,和barrier都是在执行所有的apply 之后执行的,这是个阻塞的工作。我们想并发,可以将整个apply放到一个队列,异步的执行。

相关文章

  • GCD中的apply

    1.dispatch_apply函数作用:把一项任务提交到队列中多次执行,具体是串行执行还是并行执行由队列本身决定...

  • GCD

    GCD之dispatch_apply dispatch_apply的作用是快速迭代 dispatch_apply替...

  • GCD 队列组 常用函数

    队列组 GCD : dispatch_barrier_async GCD : dispatch_apply G...

  • GCD学习(七) dispatch_apply

    GCD学习(七) dispatch_apply dispathc_apply 是dispatch_sync 和di...

  • GCD中dispatch_apply使用

    dispatch_apply使用说明 dispatch_apply类似一个for循环,会在指定的dispatch ...

  • GCD相关方法

    1.gcd栅栏函数 2.gcd快速迭代方法(dispatch_apply)同for循环做比较。 案例:将文件夹fr...

  • GCD整理(二)

    这篇会整理GCD常用的API 目录1、dispatch_after2、dispatch_apply3、dispat...

  • GCD--dispatch_apply

    Submits a block to a dispatch queue for multiple invocati...

  • GCD ⑦ dispatch_apply

    dispatch_apply(批量处理) dispatch_apply 函数按指定的次数将指定的 Block 追加...

  • iOS 使用GCD中的dispatch_apply函数

    -(void)iteratorWithApply { //////////处理数组////////// NSArr...

网友评论

      本文标题:GCD中的apply

      本文链接:https://www.haomeiwen.com/subject/rexixxtx.html