Warum verwenden Sie eine asynchrone HTTP-Anfrage über die Synchronisierung von HTTP in einem separaten Thread?

8

Ich weiß über den Unterschied, wie jeder funktioniert, aber ich möchte in einer leistungsorientierten Sichtweise (Ressourcen innerhalb des Iphone) wissen.

Sagen wir, ich sende eine asynch-Anfrage und warte auf den Delegaten, der angerufen werden soll. Dadurch wird mein Ausführungsthread nicht gesperrt. Aber was ist der Unterschied dabei, nur eine Synchronisierungsanfrage in einem anderen Thread mit GCD zu senden.

So:

%Vor%

Es wird meine Schnittstelle nicht sperren, da sie nicht im Haupt-Thread ausgeführt wird, aber sie wird diesen spezifischen Thread sperren. Und ich denke auch, dass GCD Warteschlangen gleichzeitig ausführt.

Vielen Dank im Voraus. Ich möchte diese Frage wirklich klären.

    
Pochi 10.08.2012, 05:29
quelle

1 Antwort

5

Wenn Sie NSURLConnection mit sendAsynchronousRequest verwenden, findet fast die gesamte Verarbeitung im Hauptthread statt, insbesondere wird das XML-Parsing im Hauptthread durchgeführt. Ihr Codebeispiel verwendet jedoch einen anderen Thread für die Verarbeitung.

Dieser Unterschied ist relevant, wenn Sie einen iPhone- oder iPad-Prozessor mit zwei Kernen haben. Dann kann das XML-Parsing parallel zu einigen UI-Aktivitäten im Hauptthread (in Ihrem Beispiel) ausgeführt werden. So kann es früher verglichen mit dem Ausführen von allem auf dem Hauptthread ( sendAsynchronousRequest Ansatz) abgeschlossen werden.

Bei älteren Geräten mit nur einem Kern wird jeweils nur ein Thread ausgeführt, und die beiden Ansätze sollten sich nahezu identisch verhalten.

    
Codo 10.08.2012, 05:41
quelle