队列中存放的任务最后都要由线程来执行!
队列的原则:先进先出,后进后出(FIFO/ First In First Out)!
队列的类型:
<</span>1> ‘串行‘队列:(Serial Dispatch Queue)
存放按顺序执行的任务!(一个任务执行完毕,再执行下一个任务)
注意两个非常常用的特殊队列
<</span>1> 主队列: // UI 操作放在主队列中执行!
跟主线程相关联的队列!
主队列是 GCD 自带的一种特殊的串行队列!
主队列中的任务都会在主线程中执行!
<</span>2> 全局并发队列: // 一般情况下,并发任务都可以放在全局并发队列中!
"同步"和"异步"的区别:
"同步": 只能在‘当前‘线程中执行任务,不具备开启新线程的能力.
"异步": 可以在‘新‘的线程中执行任务,具备开启新线程的能力.
常见的组合(掌握)
1> dispatch_async + 全局并发队列 (可以开启多条线程)
2> dispatch_async + 自己创建的串行队列 (开启一条线程)
只有‘异步‘执行"并发"队列,才可以开启多条线程.
在主线程中同步执行主队列中的任务,会造成‘主线程‘和‘主队列‘相互等待,卡住主线程!
?
时间: 2024-10-11 16:10:46