stackoverflow 上的大多数答案都暗示同步与异步行为与串行与并发队列概念差异非常相似。就像@Roope 的第一条评论中的链接一样
我开始认为串行和并发与DispatchQueue同步/异步有关如何在线程上执行操作。我对吗?
就像如果我们已经得到DQ.main.sync那么任务/操作闭包将以同步方式在此串行(主)队列上执行。而且,如果我DQ.main.async这样做,任务将在其他后台队列上异步获取,并且在完成后将返回主线程的控制权。而且,由于 main 是一个串行队列,因此在当前关闭任务完成执行之前,它不会让任何其他任务/操作进入执行状态/开始执行。
然后,
DQ.global().sync将在已分配其任务/操作的线程上同步执行任务,即,它将通过阻止该特定线程上的任何上下文切换来阻止该线程执行任何其他任务/操作。并且,由于 global 是一个并发队列,因此无论先前任务/操作的执行状态如何,它都会继续将其中存在的任务置于执行状态。
DQ.global().async将允许在已执行操作闭包的线程上进行上下文切换
这是对上述调度队列和同步与异步的正确解释吗?
grand-central-dispatch ios swift ios-multithreading dispatch-queue