Проблема баланса пропускной способности между двумя процессами - PullRequest
0 голосов
/ 25 марта 2019

Допустим, вы создаете приложение для iOS, которое загружает файлы из Интернета с помощью кода ниже:

let videoImageUrl = "http://www.sample-videos.com/video/mp4/720/big_buck_bunny_720p_1mb.mp4"

DispatchQueue.global(qos: .background).async {
    if let url = URL(string: urlString),
        let urlData = NSData(contentsOf: url) {
        let documentsPath = NSSearchPathForDirectoriesInDomains(.documentDirectory, .userDomainMask, true)[0];
        let filePath="\(documentsPath)/tempFile.mp4"
        DispatchQueue.main.async {
            urlData.write(toFile: filePath, atomically: true)
            PHPhotoLibrary.shared().performChanges({
                PHAssetChangeRequest.creationRequestForAssetFromVideo(atFileURL: URL(fileURLWithPath: filePath))
            }) { completed, error in
                if completed {
                    print("Video is saved!")
                }
            }
        }
    }
}

Источник: Swift - загрузка видео с удаленного URL и сохранение его в фотоальбоме

Если вы вызовете эту функцию дважды, у вас будет два одновременных подключения, но только один интернет-источник, поэтому фактически двум потокам придется использовать одну и ту же пропускную способность интернета.

Как работает разбивка того потока, который получает большую пропускную способность? Как распределяется эта пропускная способность?

...