Swift 3.0:调用`async`后调用队列中的`sync`会阻塞队列吗?

时间:2016-09-23 07:39:23

标签: ios swift asynchronous

我正在审核Swift document中的修订版并找到以下内容

  

如果需要捕获并改变输入输出参数,请使用显式本地副本,例如在多线程代码中确保在函数返回之前完成所有变异。

func multithreadedFunction(queue: DispatchQueue, x: inout Int) {
    // Make a local copy and manually copy it back.
    var localX = x
    defer { x = localX }

    // Operate on localX asynchronously, then wait before returning.
    queue.async { someMutatingOperation(&localX) }
    queue.sync {}
}

我有两个问题:

  1. 调用async然后调用sync会阻塞队列吗?
  2. 如果你想等一下,为什么要先打电话给async?我一直认为异步任务是立即返回而不等到整个代码块被执行。不应该打电话给sync
  3. 编辑添加了文档的链接。顺便说一句,我不认为queue是串行还是并发是不太相关。

0 个答案:

没有答案