美文网首页
Swift队列和线程的搭配执行

Swift队列和线程的搭配执行

作者: 种提莫的蘑菇 | 来源:发表于2021-03-01 13:48 被阅读0次

队列分为 串行队列,并行队列,特殊的主队列
线程分为 同步线程,异步线程

搭配结果一共6种
情况1:主队列,同步线程。结果:死锁
情况2:主队列,异步线程。结果:主线顺序执行,异步实现最后执行,在主线程中
情况3:串行队列,同步线程。结果:顺序执行,在主线程中
情况4:并行队列,同步线程。结果:顺序执行,在主线程中
情况5:串行队列,异步线程。结果:并发执行。不在主线程
情况6:并行队列,异步线程。结果:并发执行。不在主线程
总结一句话就是
除了主队列以外的所有异步执行都会新建线程。并发执行。
由于主队列是专门负责调度主线程度的任务,不能开辟新的线程。所以,在主队列下的任务不管是异步任务还是同步任务都不会开辟线程,任务只会在主线程顺序执行。

具体的验证代码如下,进行不同的注释切换即可

func threadFunc() {
        print("任务--> 1")
        // 依次是:主队列,并行队列,串行队列
        let queue = DispatchQueue.main
//        let queue = DispatchQueue(label: "label", attributes: .concurrent)
//        let queue = DispatchQueue(label: "label")
        for index in 0..<10 {
            // 同步异步的切换
//            queue.sync {
            queue.async {
                if Thread.current == Thread.main {
                    print("是主线程")
                }else {
                    print("不是主线程")
                }
                print("队列中的任务---> \(index)")
            }
        }
        print("任务---> 2")
    }

另外说一下主队列,同步执行死锁的原因:
因为代码任务需要马上执行,但是主线程正在执行代码任务的方法体,因此代码任务就必须等待,而主线程又在等待代码任务的完成好去完成下面的任务,因此就形成了相互等待,造成了死锁

相关文章

  • Swift队列和线程的搭配执行

    队列分为 串行队列,并行队列,特殊的主队列线程分为 同步线程,异步线程 搭配结果一共6种情况1:主队列,同步线程。...

  • 队列和线程

    [iOS多线程中,队列和执行的排列组合结果分析] 多线程中的队列有:串行队列,并发队列,全局队列,主队列。 执行的...

  • iOS GCD 常用功能

    获取主队列 异步执行 会开新线程 创建串行队列 开一个线程 顺序执行 1 和 2 创建并行队列 创建多个线程 ...

  • iOS开发-队列和同步异步执行的结果分析

    多线程中的队列有:串行队列,并发队列,全局队列(并发),主队列(串行)。 执行的方法有:同步执行和异步执行。 提到...

  • iOS多线程--GCD

    队列:串行队列,并发队列,全局队列,主队列。 2.执行的方法有:同步执行和异步执行。 多线程,四种,pthread...

  • iOSIN-GCD

    队列和同步异步 区别并行队列串行队列主队列同步(sync)没有开启新线程,串行执行任务没有开启新线程,串行执行任务...

  • iOS多线程 GCD使用

    各种方法 获取主线程队列 获取global子线程队列 关于子线程队列priority,执行完High,再执行Def...

  • Swift GCD

    参考链接 主线程 串行队列 同步依次执行,在主线程依次执行 同步依次执行,在同一个线程执行 并行队列 创建多个线程...

  • 深入浅出 GCD 线程使用

    串行与并行 同步和异步针对的是线程队列,所谓的线程队列可以理解为一组线程的数组。 串行队列:队列中是事件有序执行,...

  • iOS 多线程-CGD

    串行队列同步执行,不开启新线程,任务按顺序执行 串行队列异步执行,会开启新线程(1个),任务按照顺序执行 并行队列...

网友评论

      本文标题:Swift队列和线程的搭配执行

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