Сколько одновременных (одновременных) сетевых подключений поддерживает iphone?
Кажется, я ничего не могу найти, но я уверен, что должен быть ответ...
Сколько одновременных HTTP-соединений может обслуживать приложение iphone? Другими словами, если я строю и запускаю связку NSURLConnections асинхронно, сколько может быть в полете, прежде чем он начнет их в очереди?
Кроме того, существует ли способ проверить, сколько потоков доступно и/или используется программно?
Я пытаюсь написать интеллектуальный предварительный механизм, и эти ограничения (если они есть) будут полезной информацией.
Ответы
Ответ 1
iPhone не запускает очередность NSURConnection
s. Это полностью ваша ответственность. IPhone запустит все ваши асинхронные NSURLConnection
параллельно. Единственное, что остановит его - это ваша память:) Недавно я реализовал пул соединений (мое решение было основано на NSOperationQueue
) именно из-за этого. Теперь я могу контролировать параллельные соединения, и мое приложение не падает при загрузке сотен изображений аватаров.
О вашем втором вопросе. На самом деле я не знаю, как получить список текущих потоков. Я посмотрел на NSThread
API, но никаких признаков API для этого не было.
Ответ 2
Итак, причина, по которой я предполагал, может быть одновременным лимитом соединения на уровне мобильной ОС, заключается в том, что многие мобильные браузеры применяют ее. Существуют способы ускорения скорости загрузки мобильной версии вашего веб-сайта, гарантируя, что есть как можно больше дополнительных выборок контента. Изображения являются главным виновником, но файлы css, файлы javascript и т.д. Требуют дополнительного подключения.
В мобильном устройстве настройка и разрывание соединения намного дороже, чем одно соединение с большим количеством данных, а один из способов повышения производительности загрузки страниц - это встраивание вашего CSS и javascript на самой странице.
Похоже, что это ограничение может не существовать в самой ОС, по крайней мере на платформе iphone.
Что касается ответа на этот вопрос, я нашел этот пост, в котором обсуждаются практические ограничения одновременных соединений. Это не жесткий предел, но я думаю, что он отвечает на вопрос.
Фоновые потоки, потребляющие 100% -ный процессор на iPhone 3GS, создают скрытый основной поток