GCD是什么

按照官方文档解释,针对在多核系统运行并发执行程序,提供了系统性的支持支持包含语言中的方法,以及运行时库可以应用在macOS、iOS、watchOS、tvOS上

Dispatch, also known as Grand Central Dispatch (GCD), contains language features, runtime libraries, and system enhancements that provide systemic, comprehensive improvements to the support for concurrent code execution on multicore hardware in macOS, iOS, watchOS, and tvOS.

为什么需要使用GCD

  1. 为了提升程序资源多核CPU)的利用效率, 这样你的程序可以在同一时间运行多个线程(在多核CPU上),会让你的应用更快
  2. 可以提升你的程序的响应能力。在iOS上,用户操作以及UI线程操作是放在主线程的,此时如果存在其他的任务,你可以将这些任务放在子线程,避免堆主线时间占用,这样间接提升了主线程响应能力
  3. GCD系统自动根据程序的需要系统硬件能力控制任务线程上的调度平衡多任务执行
  4. 此外,从个人理解上,GCD封装系统上对thread使用接口,更方便使用;同时,增加了任务调度能力,避免上层在使用多任务调度多任务的负担

GCD有哪些概念

Queues and Tasks

  1. DispatchQueue,GCD队列一个先进先出的队列用来接收用户提交的Task,并放在合适的线程执行
  2. DispatchWorkItem用户任务的封装
  3. DispatchGroup用户任务组, 封装一组任务
  4. Workloop, 任务优先级调度

Thread Scheduling
5. DispatchQoS,任务优先级

System Event Monitoring

  1. DispatchSource, GCD事件源, 封装底层系统事件
  2. DispatchIO,文件IO相关对象
  3. DispatchData内存封装对象

Task Synchronization(任务同步

  1. DispatchSemaphore基于信号封装的GCD多任务之间信号量

Time Constructs 时间相关对象

  1. DispatchTime
  2. DispatchWallTime
  3. DispatchTimeInterval
  4. DispatchTimeoutResult

整体架构图

在这里插入图片描述

原文地址:https://blog.csdn.net/m0_55782613/article/details/122999943

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任

如若转载,请注明出处:http://www.7code.cn/show_44556.html

如若内容造成侵权/违法违规/事实不符,请联系代码007邮箱suwngjj01@126.com进行投诉反馈,一经查实,立即删除

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注