GCD: самое короткое завершение работы с dispatch_apply - PullRequest
0 голосов
/ 24 сентября 2019

Хочу уточнить некоторый нюанс относительно функции dispatch_apply () .Предположим, есть 100 блоков, которые я хочу выполнить с помощью dispatch_apply () .Есть 2 случая:

  1. Каждый блок вызывает [NSThread sleepForInterval: X] метод, где X - уникальный номер в диапазоне [1..100];

  2. Каждый блок выполняет тяжелые математические вычисления, при этом самый короткий занимает 1 секунду, а самый тяжелый - 100 секунд.

В компьютере 8 активных процессоров,Задания развертываются с использованием dispatch_apply (100, global_concurrent_queue);

Поэтому возникает вопрос: гарантируется ли, что в обоих случаях самая короткая задача будет завершена первой?

Обновление : это моя цель - я хочу создать пул потоков, который может принимать неограниченное количество задач, запускать их одновременно и принимать результат только от первого выполненного задания.И я хочу рассмотреть 2 разных сценария - когда задачам разрешено спать, а когда - нет.

...