Frage

Ich lerne Objective-C, werde ich eine Videoverarbeitungsanwendung entwickeln.

Ich lese den Leitfaden der Entwickler auf Apfel und ich lief in Betrieb Objekte. Ich brauche nur einige Präzisierungen, was der Unterschied zwischen den Operationen und Fäden, Nachteile, Vorteile, Anwendungsfälle.

Von dem, was ich gelesen, ist die Bedienung höhere Anwendungsprozess / Task-Management. Die NSOperationQueue kann den Betrieb Ressourcen umgehen und Gleichzeitigkeit.

Was ich nicht verstehe, ist, dass die Operation kann direkt in einem Thread ausgeführt wird, bin ich auf diesem Konzept nicht ganz klar. Ich bin nicht auf der Differenz zwischen Operationen und Threads zu löschen.

Bitte senden Sie mir so viele Informationen / Hintergrund auf den beiden wie möglich.

Vielen Dank alle.

War es hilfreich?

Lösung

Der Unterschied zwischen NSOperation und Fäden ist einer der Abstraktion. Ein Thread ist ein Low-Level (Betriebssystem-Ebene) konstruieren, mit dem gleichzeitig mehrere „Fäden“ von Code auszuführen. Obwohl die Cocoa NSThread API bereitstellt, ist es im Wesentlichen ein Wrapper auf dem pthreads API. NSOperation ist eine höhere Ebene Abstraktion einer Aufgabe, die Sie ausführen möchten. NSOperationQueue wird die Ausführung einer Warteschlange von NSOperations terminieren, um die maximal verfügbaren CPU zu verwenden, um (s). Auf einem Multi-Core-System werden mehrere NSOperations gleichzeitig einen Pool von Threads ausgeführt werden, die NSOperationQueue beibehält. Der Vorteil der Verwendung dieser höheren Ebene API ist, dass es lässt Sie denken über die „Operationen“ Sie ausführen möchten, anstatt, wie sie zu planen. Der Nachteil (und damit der Vorteil der Verwendung von NSThread direkt) ist, dass man eine bessere Kontrolle über die Planung des Fadens und die Kommunikation zwischen dem Gewinde und andere Gewinde (siehe -[NSObject performSelector:withObject:onThread:]) haben. Für Atom Aufgaben wie Videobearbeitung, ist NSOperation wahrscheinlich die beste Lösung.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top