1.什么是GCD
Grand Central Dispatch (GCD)是Apple开发的一个多核编程的解决方法。在iOS4.0开始之后才能使用。GCD是一个替代诸如NSThread, NSOperationQueue, NSInvocationOperation等技术的很高效和强大的技术。现在的iOS系统都升级到7了,所以不用担心该技术不能使用。
全称是Grand Center Dispatch(CPU调度中心,调度的是任务和线程,把任务交给线程执行)。纯C语言,提供了非常多、强大的函数。
2.GCD的关键术语
串行、并行:所谓串行并行描述是相对而言的,串行是指在同一时间只执行一个任务,并行是指在同一时间可能执行多个任务。
同步、异步:在GCD中,同步异步是为了描述一个函数相对于该函数要求GCD执行完成的另一个任务。同步方法只在它完成它需要做的任务后才会返回。异步方法刚好和同步方法相反,它不会等待任务完成才返回,它会立即返回。所以异步不会阻塞当前线程执行另一个任务(方法\函数)。
死锁:所谓的死锁是指它们都卡住了,并等待对方完成或执行其它操作。第一个不能完成是因为它在等待第二个的完成。但第二个也不能完成,因为它在等待第一个的完成。互相等待,导致谁都完不成。
线程安全:线程安全的代码在多线程或并发任务中被安全的调用,而不会导致任何问题(数据损坏、崩溃等)。比如说经典案例:买票系统,银行取钱就是这个意思。
3.队列和任务的几种情况
同步、串行队列:不开新线程,顺序执行
同步、串行队列同步、并行队列:不开新线程,顺序执行
同步、并行队列异步、串行:新开线程,顺序(同步)执行。
异步、串行异步、并行:新开线程,异步执行
异步、并行下面这个表就包含全了,一般的话用异步并行用的比较多。
同步异步串行并行表4.关于GCD单例模式
单例模式的作用
可以保证在程序运行过程,一个类只有一个实例,而且该实例易于供外界访问,从而方便地控制实例个数,并节约系统资源
单例模式的使用场合
在整个应用程序中,共享一份资源(这份资源只需要初始化1次)
附上代码
代码dispatch_once不仅意味着代码仅会被运行一次,而且还是线程安全的,这就意味着你不需要使用诸如@synchronized之类的来防止使用多个线程或者队列时不同步的问题。还有一种写法是用@synchronized,其实也是为了线程安全。
小结
好了,先讲这么多吧,全是基础的,自己多琢磨一下,以后把深层次的东西写一下分享给大家。
网友评论