我正在用Swift写一个测试。我正在测试的函数阻塞了当前线程,所以我想在后台运行它。以前我会将其封装在DispatchQueue.global.async {}
中。
Task.detached
。然而,上面的注释写着
一般应避免创建分离任务,而应使用
async
函数、async let
声明和await
表达式
当没有async
标志时,是否有另一种苹果推荐的异步启动方式?
文档只是告诉您,在许多情况下,结构化并发应该是首选,但在需要非结构化并发的情况下,可以随意使用它。
已经说过,而不是创建一个分离的任务,你可以开始一个非结构化的任务。参见Swift编程语言:并发:非结构化任务。简而言之,您可以使用Task { … }
Task.detached { … }
创建一个分离的任务。