我写了一个类来处理DispatchQueues
。我写了一个静态方法来调用main
线程。我将 acompletionHandler
作为参数传递,当前仅访问主线程并在主线程块内调用此完成处理程序。当这个方法被同时调用几次时,这会导致挂起,所以我想检查方法是否已经被主线程调用,那么我不应该调度队列而不是我只是调用完成处理程序但是当我调用它时completionHandler
它会进入一些其他线程但不作为主线程。
这是我的课
class ETQueue: NSObject {
static func main(completion: @escaping()->()) {
if Thread.isMainThread {
// If current thread is main the i am calling the completion handler but execution of this completionHandler
//Takes the thread to some other level.
completion()
}else {
DispatchQueue.main.sync {
completion()
}
}
}
static func main(_ deley: Double, completion: @escaping()->()) {
DispatchQueue.main.asyncAfter(deadline: .now() + deley) {
completion()
}
}
static func background(completion: @escaping()->()) {
DispatchQueue.global(qos: .background).async {
completion()
}
}
}