Swift 相关

Swift GCD 死锁

2020-11-08  本文已影响0人  xxxixxxx

1. 串行队列中,在异步任务中添加同步任务

/// 由于没有定义 attributes 所以是串行队列
let queue = DispatchQueue(label: "myQueue")
queue.async {
    print("----- task 1 -------")
    queue.sync {
        print("----- task 2 -------")
    }
}

⚠️解决方法
/// 解决方法将串行改为并行
let queue = DispatchQueue(label: "myQueue", attributes: DispatchQueue.Attributes.concurrent)

2. 主线程同步

let queue = DispatchQueue.main
queue.sync {
    print("----- task 1 -------")
} 
上一篇 下一篇

猜你喜欢

热点阅读