- Main (串行) (主线程) - Global (并发) (在后台线程中并行工作) - Custom (并发或串行)
每个队列都可以是异步或同步的。 第一个问题: Main 队列只在 UI 线程上工作而不在其他线程上工作吗?如果答案是肯定的,那么
DispatchQueue.Main.async
如何不会阻塞 UI 线程?如果答案是否定的,那么使用 DispatchQueue.global
的好处是什么,因为 DispatchQueue.Main.async
在另一个线程中工作。
第二个问题:
DispatchQueue.global (async)
和 DispatchQueue.global (sync)
之间的区别是什么?由于这个队列是并发的,每个队列应该在哪里使用?
第三个问题:
以下两种情况有什么区别?- (串行和同步) - (并发和异步)
DispatchQueue
只是表示它具有并发执行任务的能力。这并不意味着它只能 __同时执行任务__。而同步地调度任务会使并发队列的行为类似于串行队列,直到同步阻塞操作完成执行。 - Dávid Pásztor