Swift - 多线程开发
2022-05-10 本文已影响0人
aven_kang
class Asyncs {
public typealias Task = () -> Void
private static func _async(_ task: @escaping Task,
_ mainTask: Task? = nil) {
let item = DispatchWorkItem(block: task)
DispatchQueue.global().async(execute: item)
if let main = mainTask {
item.notify(queue: DispatchQueue.main, execute: main)
}
}
public static func async(_ task: @escaping Task){
_async(task)
}
public static func async(_ task:@escaping Task,
_ mainTask:@escaping Task) {
_async(task, mainTask)
}
}
Asyncs.async {
print(Thread.current)
// 子线程 <NSThread: 0x600003af5dc0>{number = 4, name = (null)}
}
Asyncs.async {
print(Thread.current)
// 子线程 <NSThread: 0x600003af37c0>{number = 6, name = (null)}
} _: {
print(Thread.current)
// 主线程 <_NSMainThread: 0x600003ab4940>{number = 1, name = main}
}
打印
<NSThread: 0x600003af5dc0>{number = 4, name = (null)}
<NSThread: 0x600003af37c0>{number = 6, name = (null)}
<_NSMainThread: 0x600003ab4940>{number = 1, name = main}