GCD的简陋了解+目前对于死锁的极简陋理解

参考文章(这篇文章写的极其好,大家看就对了)

iOS 多线程:『GCD』详尽总结

参考的GitHub地址

YSC-GCD-demo
就是上面这篇文章的代码Demo

关于死锁

  • 首先一句话确定死锁发生的前提:在当前线程添加同步任务到当前线程的任务队列就会造成死锁
  • 在区分几个定义:
    • 线程可以比作公路,将东西从A运到B的时候可以走多条公路同时运,也就是异步+并发
    • 那队列呢其实就是一个长条货车,上面运着许多货物(任务)
    • 总结下就是,线程上跑队列,队列是任务的集合
  • 非常难搞的一个点
    • 同步执行 + 串行队列 = 不会死锁
      • 在当前线程添加同步任务到当前线程的任务队列就会造成死锁,在添加串行队列的时候我们是在主队列里添加,而串行队列里的任务执行又是在新的串行队列里,到这里在好好分清楚上面是队列,什么是线程
    • 同步执行 + 主队列 = 死锁
      • 这个首先,我们dispatch是一个任务,要在主队列里执行,而这个想结束的前提就是将块里的任务执行完毕, 而不幸的是,块里任务不像上一个是在新的队列里执行,而是同样在主队列里执行,在他的全面还排着一个任务,要等他完成了才能继续,这就导致双方互相等待,造成死锁
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值