iOS Swift: запуск задачи загрузки для 100 URL одновременно (одновременно) менее чем за 20 секунд - PullRequest
0 голосов
/ 06 апреля 2020

В одном из моих проектов мы работаем над одной интересной функцией, то есть у нас есть ответ json, который содержит 100 URL-адресов для загрузки медиа. Из-за некоторых причин безопасности с момента получения ответа эти URL действительны в течение 20 секунд, чтобы начать процесс загрузки. Здесь важно то, что все 100 URL должны начать процесс загрузки через 20 секунд, и они могут быть завершены позже, у нас нет проблем, но важно то, что они должны начать процесс загрузки через 20 секунд с момента ответа REST.

У нас есть концепция одновременной многопоточности в iOS, но я не уверен, что все потоки начнут процесс загрузки для 100 URL-адресов менее чем за 20 секунд.

Пожалуйста, дайте мне знать ваши мысли по этому поводу. Заранее спасибо.

1 Ответ

0 голосов
/ 06 апреля 2020

Я бы использовал следующий подход:

let urls = [URL]() // your URLs here

let queue = OperationQueue()
queue.maxConcurrentOperationCount = 120 // to have capacity for all operations
queue.qualityOfService = .userInitiated // to have higher priority of start

let operations = urls.map { url in
    BlockOperation(block: {
        // load url code here, better as one function call here
    })
}
queue.addOperations(operations, waitUntilFinished: false)
...