Как контролировать количество одновременных загрузок в iOS? - PullRequest
0 голосов
/ 26 марта 2020

У меня есть массив URL-адресов видео, которые необходимо загрузить. Чтобы сохранить общую производительность, я хочу ограничить число одновременных загрузок до 2. Например, я хочу запустить первые две задачи загрузки одновременно в начале, а затем запустить третью, когда закончится любая из предыдущих загрузок. В любой момент одновременно выполняется не более двух загрузок. Как этого добиться?

Сначала мне пришло в голову, что я должен установить NSOperationQueue.maxConcurrentOperationCount равным 2, затем обернуть NSURLSessionDataTask в NSOperation и поместить его в NSOpeartionQueue. Позже я понял, что [возобновление NSURLSessionDataTask] является асинхронной операцией, поэтому все загрузки начнут выполняться почти одновременно.

Другая мысль состоит в том, что сначала я помещаю все задачи в очередь ожидания и начинаю первые две загрузки. Когда какая-либо задача завершена, я проверяю, есть ли еще задачи, ожидающие в очереди, и запускаю одну, если она есть.

Есть ли лучшее решение?

...