美文网首页
Swift之GCD

Swift之GCD

作者: 小羊爱学习 | 来源:发表于2023-11-20 15:31 被阅读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 {
                //同步并发,不开启新线程,串行执行任务
            }    
    

    结论:

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

    相关文章

      网友评论

          本文标题:Swift之GCD

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