我很困惑串行与并发队列是什么。并发允许一堆操作在队列中,然后在可用线程上拆分它们,而串行也是如此,但是将它限制在一个线程并一次等待一个线程完成?
文档中的解释似乎很混乱。
答案 0 :(得分:4)
"串行"表示提交到队列的块按顺序执行, 即,在第一个块完成之前不执行第二个块。 不意味着块在同一个线程上执行。
"并发"表示提交到队列的块可能执行 同时(在不同的线程上)。
在这两种情况下,GCD使用"线程池"执行块,所以你不知道在哪个 线程将执行一个块。唯一的例外是"主队列"哪一个 执行主线程上的所有块。
答案 1 :(得分:2)
答案 2 :(得分:0)
队列:必须为串行或并发。以及全局或私有。
串行队列:任务将一个接一个地完成
并发队列:任务将同时执行,并会以意外的时间表完成
私人队列:可以是串行队列,也可以是并发队列
全局队列:
队列可以同步或异步执行,但这会影响父队列而不是自身队列
所以:
仅在以下情况下,同步函数才将控制权返回给父队列 任务完成。它阻塞队列并等待直到任务完成 完成。
异步函数在紧接之后将控制权返回给父队列 已发送任务以在其他队列上执行。没有 等待任务完成。它不会阻止父队列。