zoukankan      html  css  js  c++  java
  • GCD的一点理解

    大家都知道GCD 有两种队列:一种是串行队列,一种是并发队列。什么是串行队列?串行队列就是队列中的代码块一个一个按顺序执行,每当上一个代码块执行结束后下一个代码块才会执行。打个比方,如果队列是一些首尾相连的火柴。那么串行队列里,这些火柴只有在前一根火柴燃烧殆尽之后自己才会燃烧。而并发队列则不是这样,并发队列也是一队火柴,但是这些火柴在工作时会被一根一根自前向后地点燃,不用等待前一根火柴燃尽。但是要注意的是,并发队列也是一个队列,尽管他可以使多个代码块同时执行,但是它也会有一个启动顺序,这个顺序也是一个自前向后的顺序。所以当每个代码块的时间花费足够小的话,并发队列的结果也就近似于串行队列了。

        那么什么是dispatch_asyncdispatch_sync呢。我将dispatch_asyncdispatch_sync理解为一种入队时的一种动作。前者是在入队时不需要等待队列结果的,而后者需要等待队列的反馈结果。同样还是拿火柴打个比方,如果说还是把队列比作一队火柴,那么dispatch_async则是将需要入队的火柴一根一根直接放在队列里,它不要知道队列是否已经到了最后一个。而dispatch_sync,则是等队列燃烧尽了再向队列里放火柴。如果我手里有10根火柴,dispatch_async是将10根火柴直接放进队列里。而dispatch_sync则是在队列快熄灭的时候放进一根,其余9根还在我的手里











  • 相关阅读:
    EntityFramework+MySql 笔记2
    EntityFramework+MySql 笔记1
    软件详细设计文档(终)
    软件测试文档(终)
    软件测试计划文档(初)
    软件概要设计文档(终)
    软件需求规格说明文档(终)
    例会记录(六)
    例会记录(五)
    例会记录(四)
  • 原文地址:https://www.cnblogs.com/dengzhuli/p/4423587.html
Copyright © 2011-2022 走看看