多线程之GCD(3)

GCD总结3


GCD的大概知识点已经串起来总结了一下。可是心里对GCD的大概的框架还是不很明了。总感觉少了点东西在里面,还是决定在梳理一下这里的东西。


dispath objects


GCD是用纯C语言编写,但是它被组建成了面向对象的风格,GCD对象被称作dispatch object。它像Cocoa对象一样可以是用引用计数。但是GCD在ios6.0以下的版本不参与垃圾回收机制,需要我们手动的release 。


dispatch Queue


GCD的基本概念就是dispatch queue。

 (1)它是一个对象,能够接受任务。

 (2)它可以把任务按照先进先出(队列)的规则来执行。

 (3)它可以并发后者串行的执行。


GCD的三种队列

(1)main queue (主线程串行队列)

       dispatch_queue_t mainqueue = dispatch_get_main_queue();


(2)Global queue (全局并发队列)

        dispatch_queue_t globalQueue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT,0);

第一个参数是优先级,第二个可设置为0


(3)自定义的队列

        1.可定义串行

       dispatch_queue_t queue1 = dispatch_queue_create(“myqueue”,DISPATCH_QUEUE_SERIAL);

       2.可定义并发队列

dispatch_queue_t queue2 = dispatch_queue_create(“myqueue”,DISPATCH_QUEUE_CONCURRENT);


dispatch_(a)sync 加载队列的方法


我们使用block把要执行的操作放到queue中,在使用同步和异步的方法去执行queue,

不同的加载方法和不同的队列进行排列组合后会产生一些奇妙的效果,这些在前面已经举例子论证了。


dispatch group ,dispatch semaphore,dispatch sources


对于异步多线程操作带来的资源争夺,数据获取,数据刷新等问题,这几个可以帮助我们管理queue。处理一些,由于使用了多线程所带来的问题。



dispatch_barrier_async Dispatch_apply  

都是在dispatch_(a)sync dispatch group等结合的产物,是为了解决一些对应的问题。


剩下的就是dispatch 的其他一些特有的方法。需要的时候可以去查看下。

以上总结的是GCD的使用方案的框架,接下里会学习GCD的具体实现方法。会在以后继续深入。


学完一个知识点,脑子里应该有个框架。


你可能感兴趣的:(gcd)