在本教程的上一部分中,无涯教程讨论了Swift中的GCD概念,该概念允许swift中的多线程。在本教程的这一部分中,无涯教程将快速讨论线程的并发执行。无涯教程还将包括GCD使用的队列类型和QoS类。
正如无涯教程已经提到的,GCD使用分派队列,该队列用于任务提交,其中任务以先进先出的方式执行。在iOS中,进程或应用程序包含一个或多个线程;操作系统的责任是彼此独立地调度和管理线程。
但是,每个线程可以同时执行。操作系统决定哪些线程将同时执行,以及何时执行。归档并发的最常用方法之一是时间分片,其中为每个线程分配了相同的执行时间,并且系统在每个时间间隔执行上下文切换。时间片主要存储在单核系统中。
另一方面,多核系统可以使用并行性来同时执行多个线程。但是,GCD构建在线程的顶部。它管理着一个共享线程池,无涯教程可以在其中添加代码块来调度队列。 GCD始终根据系统和可用资源来决定所需的并行度。
正如无涯教程在上一节中已经讨论的那样,GCD在调度队列上运行。 swift中的调度队列是DispatchQueue的实例,无涯教程将任务提交到此队列。 GCD以先进先出的顺序执行调度队列中的任务。在此,调度队列是线程安全的,可以同时由多个线程访问。
但是,队列可以是并发的或串行的。顾名思义,串行队列在给定时间仅执行一个线程。在此,GCD决定执行时间。无涯教程永远无法知道执行单个任务所花费的时间。
另一方面,并发队列同时执行多个任务。无涯教程永远无法知道启动下一个任务所花费的时间。任务将以添加的相同顺序开始执行。但是,它们可能以不同的顺序结束。无涯教程无法假设一次运行的线程数。
链接:https://www.learnfk.comhttps://www.learnfk.com/ios/concurrency-in-swift.html
来源:LearnFk无涯教程网
在这里,它取决于GCD何时启动线程。如果两个线程的执行相互重叠,GCD还决定是否在不同的内核上运行任务。
GCD可以使用三种类型的队列。
当任务发送到全局队列时,无涯教程指定服务质量类属性。 QoS类确定任务的优先级,然后允许GCD执行它们。
系统中存在以下QoS类类别。
Background - 这些是在应用程序后台运行的任务。用户不知道这些任务。这些任务用于预取,下载,上载,维护和其他类似任务。这必须在后台全局优先级队列中执行。
祝学习愉快!(内容编辑有误?请选中要编辑内容 -> 右键 -> 修改 -> 提交!)