WithCheckedContinuation的主体将在后台线程上运行,以防从主要参与者开始

并发延续重现

Xcode 14.0 和 14.1 之间的并发行为差异

在 Xcode 14.1 上

withCheckedContinuation的主体将在后台线程上运行,以防从主要参与者开始。

这种情况仅在iOS 15之前发生。所以 13.x 和 14.x 在 Xcode 14.1 中就有这种情况。 这些操作系统版本是并发反向部署的目标。

Task { @MainActor () -> Void in
  await withCheckedContinuation { c in    
    // >= iOS 15 : on main-thread
    // < iOS 15 : on background-thread
    c.resume()
  }
}

图像

Until Xcode 14.0(also 14.0.1) is fine.

Related

https://twitter.com/kylehickinson/status/1582471814843883535

GitHub

点击跳转