如何在 Swift 中关闭主线程

How do I switch off from the main thread in Swift

在 Swift 中,如果使用以下方式向主线程分派工作块:

DispatchQueue.main.async {
   // work
   // myCallback()
}

在 myCallback 中放置 print(Thread.current) 表示它在主线程上 运行。此时如何离开主线程?或者,如果我看错了,我怎么知道我发送到主线程的某些工作何时完成?

要使用另一个线程,您可以使用以下内容。

let queue = DispatchQueue(label: "onde queue")

print(Thread.current)

queue.async {
    print(Thread.current)
    DispatchQueue.main.async {
        print(Thread.current)
    }
}

你必须创建一个队列,用于更改线程,但是当你在另一个线程上并且你想返回主线程时,你将使用 DispatchQueue.main.async

如果你想在后台线程上手动做一些事情运行,你可以先获取具有指定quality-of-serviceclass的全局系统队列,然后调用它的async { code } 调度块执行的方法:

示例:

print(Thread.current)

DispatchQueue.global(qos: .background).async {
    print(Thread.current)
}

日志:

<NSThread: 0x600003b60bc0>{number = 1, name = main}
<NSThread: 0x600003bcf340>{number = 14, name = (null)}

Dispatch Queue 的文档;

global(qos:) 的文档。