本文代码:https://github.com/NinoWang/MultithreadingDemo/tree/master
多线程的知识,网上有无数文章来讲述,但真正理解起来还是有点绕的,还是要靠实践才能真正理解,本文以代码为主,少量叙述为辅和大家来捋一下。建议直接下载源码进行理解,不理解的地方在来文章里找答案。话少说,开捋。
基本概念
说到GCD,通常与相似功能的Operation Queue进行比较理解。
GCD是使用C语言构成的API,而Operation Queue是具体的Objc对象;GCD是使用block的形式管理队列中的任务,而Operation Queue是直接把队列和任务作为具体的对象进行操作。
任务和队列
任务分为同步任务(sync)和异步任务(async)两种。
两者的区别在于,异步任务具备开辟新线程的能力,而同步任务不具备该能力。