Я пытаюсь изучить очередь, приоритет операции. У меня есть три объекта Operation с queuePriority очень высокой, высокой и нормальной. Но я получаю неожиданный вывод, в журнале я вижу объекты Operation с queuePriority очень высокими, которые не всегда выполняются первыми. Пожалуйста, помогите.
let operationQueue = OperationQueue()
let op1 = BlockOperation()
let op2 = BlockOperation()
let op0 = BlockOperation()
op0.completionBlock = {
print("op0 completionBlock")
}
op0.addExecutionBlock {
print("op0 executionBlock #1")
}
op0.addExecutionBlock {
print("op0 executionBlock #2")
}
op0.queuePriority = .veryHigh
op1.completionBlock = {
print("op1 completionBlock")
}
op1.addExecutionBlock {
print("op1 executionBlock")
}
op1.queuePriority = .high
op2.completionBlock = {
print("op2 completionBlock")
}
op2.addExecutionBlock {
print("op2 executionBlock")
}
op2.queuePriority = .normal
operationQueue.addOperations([op2, op1, op0], waitUntilFinished: true)
Вывод: выполнение op1Block op0 выполнениеBlock # 1 op0 выполнениеBlock # 2 op2 выполнениеBlock op1 завершениеBlock op0 завершениеBlock op2 завершениеБлок