美文网首页
iOS 开发_GCD函数与队列一、初探

iOS 开发_GCD函数与队列一、初探

作者: iOS_PM_WEB_尛鹏 | 来源:发表于2018-12-21 10:45 被阅读0次

    【作者前言】:13年入圈,分享些本人工作中遇到的点点滴滴那些事儿,17年刚开始写博客,高手勿喷!以分享交流为主,欢迎各路豪杰点评改进!

    1.应用场景:

    多线程神器---GCD,很多开发的场景中,我们都会使用到。

    2.实现目标:

    探究GCD,这个平时我们经常会用,但是又不知道为什么的盲区???

    3.代码说明:【GCD核心:函数和队列】

    1)GCD的简介:

    什么是GCD???
    GCD--->全称 Grand Central Dispatch(重点在Dispatch。调度!)
    纯C语言,提供了非常多而且强大的函数
    优势:

    ①GCD是苹果公司为多核的并行运算提出的解决方案
    ②GCD会自动利用更多的CPU内核(比如双核、四核)
    ③GCD会自动管理线程的生命周期(创建线程、调度任务、销毁线程)程序员只需要告诉GCD想要执行什么任务,不需要编写任何线程管理代码。

    2)将任务添加到队列,并且指定执行任务的函数
    • 任务使用block封装
    • 任务的block没有参数也没有返回值
    • 执行任务的函数
      • 异步'dispatch_async'
        • 不用等待当前语句执行完毕,就可以执行下一条语句
        • 会开启线程执行block的任务
        • 异步是多线程的代名词
      • 同步'dispatch_sync'
        • 必须等待当前语句执行完毕,才会执行下一天语句
        • 不会开启线程
        • 在当前执行block的任务


          image.png
    3)队列 调度上都符合FIFO原则(先进先出 ---堆的规则),执行上串行队列依旧可控,并行队列中不一定

    ①串行队列 --->依次调度,执行结果属于排队规则


    image.png

    ②并行队列 --->并行调度,执行结果属于插队规则, 执行顺序不能把握


    image.png

    相关文章

      网友评论

          本文标题:iOS 开发_GCD函数与队列一、初探

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