美文网首页iOS开发笔记
GCD中的串行,并行,同步,异步详解

GCD中的串行,并行,同步,异步详解

作者: 李Mr | 来源:发表于2016-07-27 14:46 被阅读103次

    gcd中的串行,并行,同步,异步详解


    1、gcd中同步与异步的区别:

    gcd中的线程是由一个线程池来管理的,这个池中存放的是一个个的线程。之所以称为“池”,很容易理解出这个“池”中的线程是可以重用的。

    如果任务是线程同步的,那么会等待当前线程执行完毕之后,再从池子中拿出一条线程。所以同步的过程中只有一条线程执行任务。

    如果任务是线程异步的,队列中的任务不需等待当前任务执行完毕就可以调度下一个任务,这时底层线程池中会再次提供一个线程供第二个任务执行,执行完毕后再回到底层线程池中。

    总结:

    串行同步:任务按顺序执行,整个过程只会开一条线程。

    串行异步:任务按顺序执行,因为是串行所以也只会开一条线程。

    并行同步:任务不按顺序执行,整个过程只开一条线程。

    并行异步:任务不按顺序执行,整个过程可能有多条线程。

    为了提高效率建议最多开3~5条并发线程。

    相关文章

      网友评论

      • 我不是小兵:“为了提高效率建议最多开3~5条并发线程“,您好,这句有点不明白啊,GCD不是系统管理的么,讲道理,系统应该能知道如何更高效的处理并发。为什么系统接管了,还要手动控制呢

      本文标题:GCD中的串行,并行,同步,异步详解

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