Обычно NSOperationQueue
гарантирует, что задачи с низкими приоритетами не будут выполняться, пока не будут выполнены задачи с высокими приоритетами. Однако, когда большое количество операций быстро добавляется в очередь, иногда очередь операций может перегружаться, как показано ниже
Этот график отслеживает историю 1000 операций. Красная линия показывает количество задач с приоритетом NSOperationQueueVeryLowPriority
, которые в данный момент выполняются, зеленая линия показывает количество задач с NSOperationQueueNormalPriority
, которые бездействуют в очереди и NOT , которые выполняются, и, наконец, синий строка показывает общее количество операций в очереди.
Теперь максимальный параллелизм NSOperationQueue
по умолчанию в этом случае составляет 64. Когда все эти 64 слота заполнены, даже если задачи с более высоким приоритетом существуют, они не выполняются и должны ждать , У меня вопрос, есть ли способ настроить NSOperationQueue
так, чтобы даже под нагрузкой он оставлял часть мощности для операций с более высоким приоритетом?