0%

iOS多线程GCD

源于这篇文章的总结,学习下。
开始之前先说下自己一直都迷惑的地方,搞不懂为什么有了同步异步任务还要并行串行干嘛,直接用任务来区分不就行了,希望后面可以解答。

队列

  • 串行队列
    • 有任务正在执行,不允许插入任务,即不允许任务阻塞,但是可以被别的队列任务阻塞
  • 并行队列

任务

  • 同步任务
    • 立即执行
    • 必须等待任务结束
    • 任务完成后,恢复之前的原任务
  • 异步任务
    • 不定时间运行
    • 不用等待任务结束
// 同步任务
// current thread - thread 0
queue.sync {
// current thread thread1 = thread0
}

// 异步队列
queue.async {
// current thread thread1 != thread0
}

参考

iOS Swift GCD 开发教程
iOS多线程详解:实践篇