Сколько одновременных (параллельных) сетевых соединений iPhone поддерживает?

Я, может казаться, не нахожу это нигде, но я уверен, что должен быть ответ...

Сколько одновременных HTTP-соединений приложение для iPhone может обслужить? Другими словами, если я создаю и выполняю набор NSURLConnections асинхронно, сколько может быть в полете, прежде чем он начнет ставить их в очередь?

Кроме того, есть ли метод для проверки, сколько потоков доступно и/или используемо программно?

Я пытаюсь записать интеллектуальный механизм упреждающей выборки, и эти пределы (если таковые имеются) были бы полезной информацией.

13
задан DougW 20 May 2010 в 20:31
поделиться

2 ответа

iPhone не начинает ставить в очередь NSURConnectionы. Это полностью ваша ответственность. iPhone будет запускать все ваши асинхронные NSURLConnectionы параллельно. Единственное, что остановит его - это ваша память :) Недавно я реализовал пул соединений (мое решение было основано на NSOperationQueue) только из-за этого. Теперь я могу контролировать параллельные соединения, и мое приложение не падает при загрузке сотен изображений аватаров.

По поводу вашего второго вопроса. На самом деле я не знаю, как получить список текущих потоков. Я просмотрел NSThread API, но не нашел никаких признаков API для этого...

10
ответ дан 2 December 2019 в 01:09
поделиться

Итак, причина, по которой я предположил, что на уровне мобильной ОС может существовать ограничение на одновременное соединение, заключается в том, что многие мобильные браузеры его соблюдают. Существуют методы ускорения загрузки мобильной версии вашего сайта за счет того, чтобы обеспечить как можно меньшее количество дополнительных подхватов контента. Изображения - главный виновник, но css-файлы, файлы javascript и т.д. - все они требуют дополнительного подключения.

В мобильных устройствах установка и разрыв соединения обходится гораздо дороже, чем одно соединение с большим количеством данных, поэтому одним из методов повышения производительности загрузки страницы является встраивание CSS и javascript в саму страницу.

Похоже, что это ограничение может отсутствовать в самой ОС, по крайней мере, на платформе iphone.

Что касается ответа на этот вопрос, я нашел этот пост, в котором обсуждаются практические ограничения одновременных подключений. Это не жесткое ограничение, но я думаю, что оно отвечает на суть вопроса.

Background threads consuming 100% CPU on iPhone 3GS causes latent main thread

1
ответ дан 2 December 2019 в 01:09
поделиться