iOS 多线程(二):GCD
💡
原文中文,约12200字,阅读约需29分钟。
📝
内容提要
GCD是苹果公司为多核并行运算提出的解决方案,能够主动利用更多的CPU内核,程序员只需告诉GCD想要执行什么任务,不需要编写线程管理代码。GCD有同步异步和串行并发两种任务执行方式,可以组合使用。GCD还有其他用法,如栅栏函数、调度组、信号量、dispatch_once和dispatch_apply等。其中,dispatch_source常用于GCD定时器的实现。
🎯
关键要点
- GCD是苹果公司为多核并行运算提出的解决方案,能够主动利用更多的CPU内核。
- 程序员只需告诉GCD想要执行的任务,不需要编写线程管理代码。
- GCD有同步和异步两种任务执行方式,分别对应于是否等待任务完成和是否开启新线程。
- GCD中有串行队列和并发队列,串行队列一个任务完成后再执行下一个,而并发队列可以同时执行多个任务。
- 可以组合使用同步和异步以及串行和并发的队列。
- 栅栏函数用于控制任务的执行顺序,确保一组任务完成后再执行另一组任务。
- 读写锁在读多写少的场景下效率高,允许多个读者同时存在,但只允许一个写者。
- 调度组用于将任务分组执行,并可以监听任务组的完成情况。
- 信号量用于控制GCD的最大并发数,也可以作为锁使用。
- dispatch_once用于确保某段代码在程序运行过程中只被执行一次,确保线程安全。
- dispatch_apply用于在并行队列中执行多次任务,类似于for循环。
- dispatch_source常用于实现GCD定时器,提供更高的计时精度。
➡️