iOS 底层探索之多线程(三)—初识GCD

2021-08-16  本文已影响0人  小緈福

回顾 \color{red}{}

在前两篇博客,已经介绍了\color{red}{进程}\color{red}{线程},还介绍了\color{red}{自旋锁}\color{red}{互斥锁}等相关内容,在 iOS 开发中,使用最多的还是 \color{red}{GCD},那么从本篇开始讲陆续介绍 \color{red}{GCD}


iOS 底层探索之多线程(一)—进程和线程
iOS 底层探索之多线程(二)—线程和锁

1. 什么是 GCD

GCD定义

Grand Center Dispatch简称GCD,是苹果公司开发的技术,以优化应用程序支持多核心处理器。

GCD将任务添加到队列,并且指定执⾏任务的函数

GCD工作原理

GCD的两个核心:任务和队列

2. 任务和队列

\color{red}{任务}:需要执行什么操作
\color{red}{队列}:用来存放任务的

GCD使用的两个步骤:创建任务、将任务添加到队列

串行队列

\color{red}{串行队列}(Serial Dispatch Queue),任务一个接着一个的执行,一个任务执行完毕后,再执行下一个任务,串行队列是\color{red}{顺序执行}的。

并发队列

\color{red}{并发队列}(Concurrent Dispatch Queue),可以让多个任务并发(\color{red}{同时})执行,自动开启多个线程同时执行任务。
并发功能只有在异步(dispatch_async)\color{red}{函数}下才有效。

3. 函数

异步dispatch_async

同步dispatch_sync

1、让程序平行排队的特定任务,根据可用的处理资源,安排他们在任何可用的\color{red}{处理器核心}上执行任务 。
2、一个任务可以是一个函数,是一个闭包体\color{red}{GCD}的底层此意使 用线程实现的,不过这样可以让程序员不用关注实现的细节。
3、\color{red}{}GCD中必须要使用的是各种\color{red}{队列},我们遇过block,把具体的代码放到\color{red}{队列}中,队列中的任务\color{red}{排队执行},系统会自动的把队列中的具体任务分配到具体的线程中和\color{red}{CPU}中(如果是多核处理器),具体创建多少个线程,分配到哪个线程都是由\color{red}{系统管理}

更多内容持续更新

🌹 喜欢就点个赞吧👍🌹
🌹 觉得有收获的,可以来一波,收藏+关注,评论 + 转发,以免你下次找不到我😁🌹
🌹 欢迎大家留言交流,批评指正,互相学习😁,提升自我🌹
🌹 作者邮件:zhangxmsy@163.com 有问题联系。

上一篇 下一篇

猜你喜欢

热点阅读