GCD线程死锁

2018-07-02  本文已影响0人  我是繁星

GCD 以下情况下会死锁,(不考虑线程锁的情况下)

DispatchQueue.main.sync {
            print("任务")
        }
var queue = DispatchQueue.init(label: "serialQueue", attributes: .init(rawValue: 0))
queue.sync {
            print("任务1")
            queue.sync(execute: {
                print("任务2")
            })
        }

为什么呢?,先说说主队列和全局并发队列
全局并发队列:本质是一个并发队列,由系统提供,方便编程,可以不用创建就直接使用。
和并发队列的区别:
1.全局队列没有名字,但是并发队列有名字。有名字可以便于查看系统日志
2.全局队列是所有应用程序共享的。
3.在mrc的时候,全局队列不用手动释放,但是并发队列需要。

主队列:比较特殊的,它专门负责主线程的任务调度,即使异步执行也不会开辟新的线程。任务只会在主线程中顺序执行。

上一篇下一篇

猜你喜欢

热点阅读