2010-05-20 18 views
13

Ich kann nicht scheinen, das irgendwo zu finden, aber ich bin sicher, es muss eine Antwort geben ...Wie viele gleichzeitige (gleichzeitige) Netzwerkverbindungen unterstützt iphone?

Wie viele gleichzeitige HTTP-Verbindungen kann ein iPhone App Service? Mit anderen Worten, wenn ich eine Reihe von NSURLConnections asynchron erstelle und ausführe, wie viele können im Flug sein, bevor es beginnt, sie in die Warteschlange zu stellen?

Gibt es auch eine Methode, um zu überprüfen, wie viele Threads verfügbar sind und/oder programmgesteuert verwendet werden?

Ich versuche, eine intelligente Pre-Abruf-Engine zu schreiben, und diese Grenzen (falls vorhanden) wären nützliche Informationen.

+0

Ich bin nicht sicher, ob es eine Grenze gibt - wenn es, es ist wahrscheinlich das gleiche wie OSX. – shosti

Antwort

10

Das iPhone startet nicht in der Warteschlange NSURConnection s. Das ist völlig deine Verantwortung. Das iPhone startet alle Ihre asynchronen NSURLConnection s parallel. Die einzige Sache, die es stoppen wird, ist dein Gedächtnis :) Ich habe gerade einen Verbindungspool (meine Lösung basierte auf NSOperationQueue) gerade deshalb. Jetzt kann ich parallele Verbindungen steuern und meine App stürzt nicht ab, wenn Hunderte von Avatarbildern geladen werden.

Über Ihre zweite Frage. Ich weiß eigentlich nichts über eine Möglichkeit, die Liste der aktuellen Threads zu erhalten. Ich habe einen Blick auf NSThread API, aber kein Zeichen für eine API dafür ..

+0

Ich stimme dem zu, aber ich denke, wenn es keine harte Grenze gibt, ist die Antwort, nach der ich suche, wie man die praktischen Begrenzungen bestimmt. Natürlich können wir das Limit beliebig auf 2 oder 3 oder unendlich setzen, aber ich würde gerne ein intelligenteres Managementsystem entwickeln. Ich denke, der Post, auf den ich in meiner Antwort Bezug genommen habe, kommt dem am nächsten. – DougW

1

Also der Grund, dass ich angenommen, dass möglicherweise eine gleichzeitige Verbindung Grenze auf der Ebene des mobilen Betriebssystems ist, weil viele mobile Browser erzwingen. Es gibt Techniken, um die Ladegeschwindigkeit der mobilen Version Ihrer Website zu beschleunigen, indem Sie sicherstellen, dass so wenig zusätzliche Inhalte abgerufen werden wie möglich. Bilder sind der Hauptschuldige, aber CSS-Dateien, Javascript-Dateien, usw. erfordern alle eine zusätzliche Verbindung.

In mobilen, Einrichten und Abbauen einer Verbindung ist viel teurer als eine einzelne Verbindung mit mehr Daten, und eine Technik zur Verbesserung der Leistung Seitenleistung ist die Einbettung Ihrer CSS und Javascript in der Seite selbst.

Es klingt wie diese Einschränkung möglicherweise nicht im Betriebssystem selbst, zumindest auf der iPhone-Plattform.

Soweit eine Antwort auf diese Frage, fand ich diesen Beitrag, der die praktischen Grenzen der simultanen Verbindungen diskutiert. Es ist keine harte Grenze, aber ich denke, es beantwortet den Punkt der Frage.

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

Verwandte Themen