多线程之GCD与单例模式

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.队列和任务的几种情况

同步、串行队列:不开新线程,顺序执行

多线程之GCD与单例模式_第1张图片
同步、串行队列

同步、并行队列:不开新线程,顺序执行

多线程之GCD与单例模式_第2张图片
同步、并行队列

异步、串行:新开线程,顺序(同步)执行。

多线程之GCD与单例模式_第3张图片
异步、串行

异步、并行:新开线程,异步执行

多线程之GCD与单例模式_第4张图片
异步、并行

下面这个表就包含全了,一般的话用异步并行用的比较多。

多线程之GCD与单例模式_第5张图片
    同步异步串行并行表

4.关于GCD单例模式

单例模式的作用

      可以保证在程序运行过程,一个类只有一个实例,而且该实例易于供外界访问,从而方便地控制实例个数,并节约系统资源

单例模式的使用场合

       在整个应用程序中,共享一份资源(这份资源只需要初始化1次)

附上代码

多线程之GCD与单例模式_第6张图片
 
代码

dispatch_once不仅意味着代码仅会被运行一次,而且还是线程安全的,这就意味着你不需要使用诸如@synchronized之类的来防止使用多个线程或者队列时不同步的问题。还有一种写法是用@synchronized,其实也是为了线程安全。

小结

好了,先讲这么多吧,全是基础的,自己多琢磨一下,以后把深层次的东西写一下分享给大家。

你可能感兴趣的:(多线程之GCD与单例模式)