Я написал класс для обработки DispatchQueues
. Я написал статический метод для вызова потока main
. Я передаю completionHandler
в качестве аргумента, а текущий просто обращается к основному потоку и вызывает этот обработчик завершения внутри основного блока потока. Это вызывает зависание, когда этот метод вызывается несколько раз одновременно, поэтому я хочу проверить, вызывается ли метод уже основным потоком, тогда я не должен отправлять очередь, а не просто вызывать обработчик завершения, но когда я вызываю этот 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()
}
}
}