Swift之GCD

2023-11-20  本文已影响0人  小羊爱学习

串行队列

        let queue = DispatchQueue(label: "")
        let queue = DispatchQueue(label: "", qos: .background) // qos: 优先级
        queue.async {
            //异步串行,只开启一条新线程,串行执行任务
        }
        queue.sync {
            //同步串行,不开启新线程,串行执行任务
        }

主队列

        let queue = DispatchQueue.main
        queue.sync {
            // 主队列同步任务,不开启新线程,串行执行任务
        }
        queue.async {
            // 主队列异步任务,不开启新线程,串行执行任务
        }

并发队列

        let queue = DispatchQueue(label: "", attributes: .concurrent)
        let queue = DispatchQueue(label: "", qos: .utility, attributes: .concurrent)
        queue.async {
            //异步并发,开启新线程,并发执行任务
        }
        queue.sync {
            //同步并发,不开启新线程,串行执行任务
        }

全局并发队列

        let queue = DispatchQueue.global()    
        queue.async {
            //异步并发,开启新线程,并发执行任务
        }
        queue.sync {
            //同步并发,不开启新线程,串行执行任务
        }    

结论:

同步任务,不管什么队列,全都不开启新线程,串行执行任务
异步任务,主队列不开启,串行执行;串行队列,开启一条,串行执行;并发队列,开启多条,并发执行

上一篇 下一篇

猜你喜欢

热点阅读