Unterschied zwischen den Operationen und Fäden in Cocoa
-
06-07-2019 - |
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.
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 pthread
s 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.