Swift - 多线程

Swift - 多线程 首页 / iOS入门教程 / Swift - 多线程

可以将多线程定义为有助于CPU创建和执行并发线程的过程。通常,CPU一次执行一次操作。但是,通过使用多线程,无涯教程可以允许CPU在不同的任务之间切换,以便可以同时执行它们。

在iOS中,UI具有其线程。当无涯教程执行复杂的任务时,UI保持不变。让无涯教程考虑一个场景,在该场景中无涯教程在后台执行一些上传任务,并在前台运行该应用程序。在这里,iPhone如此快速地在两个线程之间切换,直到线程完成为止。在这里,无涯教程不需要按顺序执行任务,因为iPhone可以在上传文件和绘制屏幕之间进行切换。

GCD概念

GCD代表Grand-Central-Dispatch,它是一个API,用于在工作池上执行关闭。在此,以先进先出(FIFO)的顺序执行。

CPU将要执行的任务由应用程序以块的形式提交到调度队列。该块在系统提供的线程池上执行。分派队列中的所有任务都可以顺序执行或并发执行。但是,分派队列始终保持任务的FIFO顺序。

链接:https://www.learnfk.comhttps://www.learnfk.com/ios/multithreading-in-swift.html

来源:LearnFk无涯教程网

通过提交任务以分派系统管理的队列,该框架有助于在多核系统上同时执行代码。

为什么使用GCD?

使应用程序对用户保持响应是当今最常见的做法。但是,为了满足无涯教程的要求,无涯教程始终在向无涯教程的应用程序中添加新功能,从而使其运行速度变慢且用户友好性降低。

无涯教程网

为了使应用程序更快,响应速度更快,无涯教程可以使用GCD运行应用程序线程并将信息呈现给用户。例如,如果无涯教程要解析一个需要花费10或15秒才能解析的大型JSON文件,那么无涯教程始终可以运行一个线程,该线程可以向用户显示加载中,以便假定正在处理某些任务。

让无涯教程看一个示例,在该示例中,无涯教程将任务异步分配到主队列。

import UIKit


class ViewController: UIViewController {


    @IBOutlet weak var tableView: UITableView!
    
    let refreshControl = UIRefreshControl()
    var arr = Array()
    
    override func viewDidLoad() {
        super.viewDidLoad()
       //Do any additional setup after loading the view.
        var n: Int = 2
        var value:Int = 1


        DispatchQueue.main.async {
            debugPrint("printing table of \(n)")
            for i in 1...10 {
                value = i
                
                print(n*i)
            }
        }


        for i in 0...10 {
            n = i
            print("Value = " + n.description)
        }


        DispatchQueue.main.async {
            n = 9
            print(n)
        }
    }
}

输出:

Value = 0
Value = 1
Value = 2
Value = 3
Value = 4
Value = 5
Value = 6
Value = 7
Value = 8
Value = 9
Value = 10
"printing table of 10"
10
20
30
40
50
60
70
80
90
100
9

祝学习愉快!(内容编辑有误?请选中要编辑内容 -> 右键 -> 修改 -> 提交!)

技术教程推荐

苏杰的产品创新课 -〔苏杰〕

正则表达式入门课 -〔涂伟忠〕

To B市场品牌实战课 -〔曹林〕

Python自动化办公实战课 -〔尹会生〕

程序员的测试课 -〔郑晔〕

反爬虫兵法演绎20讲 -〔DS Hunter〕

说透低代码 -〔陈旭〕

超级访谈:对话毕玄 -〔毕玄〕

Rust 语言从入门到实战 -〔唐刚〕

好记忆不如烂笔头。留下您的足迹吧 :)