如何在 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:)
的文档。
在 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:)
的文档。