美文网首页
多线程之GCD与单例模式

多线程之GCD与单例模式

作者: 奥斯卡先生 | 来源:发表于2016-02-25 15:11 被阅读124次

    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,其实也是为了线程安全。

    小结

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

    相关文章

      网友评论

          本文标题:多线程之GCD与单例模式

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