1
18
让我看看是否可以澄清
在我的示例中,我将采用以下几个更改:
因此,请考虑:
这就像你的例子,但是
因此,您可以看到:
但是,如果将此更改为使用并发队列,请执行以下操作:
那么你可以看到
这次,
如您所见
从上面可以得出两个主要结论:
|
2
4
同步和异步执行与底层队列无关。同步执行意味着调用线程必须等到块完成。因此,第二个块是
在之后排队
第一个块已完成。Asynchrounous表示调用方
不得
等待块完成。因此,第三个块是
排队
直接在之前的
在功能结束时
您可以通过添加
在两次调用之前
这
晚的
两个块的执行意味着
异步的
。如果要将第一个(同步)块移动到
|
3
0
因此,同步任务立即运行,然后在完成时,向该队列添加两个异步任务,*然后方法返回*这两项任务将按顺序进行处理, 只要队列空闲 。 因此,如果在调用此方法之前队列中有任何挂起的异步任务,则这些任务将在两个异步任务之前运行。 |
Max Kraev · Swift中的嵌套异步调用 6 年前 |
onTheWay · 为什么并发队列的行为很奇怪? 6 年前 |
ChokWah · iOS中的GCD始终创建新线程 6 年前 |
Mike · 如何调度。主要的异步“更新UI”? 7 年前 |
Paul T. · 不同请求的不同DispatchQueue 7 年前 |