2010-05-20 102 views
13

我似乎無法在任何地方找到此,但我確定必須有答案...iphone支持多少個同時(併發)網絡連接?

一個iphone應用程序服務可以同時有多少個HTTP連接?換句話說,如果我以異步方式構建並運行一組NSURLConnections,那麼在開始對它們進行排隊之前,有多少可以在飛行中?

此外,有沒有一種方法來檢查有多少線程可用和/或正在使用編程?

我想寫一個智能預取引擎,並且這些限制(如果有的話)將是有用的信息。

+0

我不知道是有極限的 - 如果有,它可能是一樣的OSX。 – shosti 2010-05-20 23:19:56

回答

10

iPhone不開始排隊NSURConnection s。這完全是你的責任。 iPhone將並行啓動所有異步NSURLConnection。唯一會阻止它的是你的記憶:)我最近實現了一個連接池(我的解決方案基於NSOperationQueue),正因爲如此。現在我可以控制並行連接,並且在加載數百個頭像圖像時,我的應用程序不會崩潰。

關於你的第二個問題。我其實不知道如何獲取當前線程的列表。我看了一下NSThread API,但沒有表示API的跡象..

+0

我同意,但我想如果沒有硬限制,我正在尋找的答案是如何確定實際的限制。當然,我們可以任意設定限制爲2或3或無限,但我想開發一個更智能的管理系統。我認爲我在答覆中引用的帖子與此最接近。 – DougW 2010-05-21 20:24:12

1

所以我假設的原因可能是在移動操作系統級別同時連接限制是因爲許多移動瀏覽器強制執行一個。有些技術可以通過確保儘可能少的附加內容獲取來加快網站移動版本的加載速度。圖像是主要的罪魁禍首,但CSS文件,JavaScript文件等都需要額外的連接。

在移動設備中,建立和拆除連接比使用更多數據的單個連接要昂貴得多,而提高頁面加載性能的一種技術是將CSS和JavaScript嵌入頁面本身。

聽起來這個限制可能不存在於操作系統本身,至少在iphone平臺上。

至於這個問題的答案,我發現這篇文章討論了同時連接的實際限制。這不是一個硬性限制,但我認爲它回答了這個問題的關鍵。

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