Parallelitätskontrolle

Parallelität ist eine Möglichkeit, mehrere Dinge gleichzeitig auszuführen. In einer Anwendung bezieht sich Parallelität auf mehrere Aufgaben, die gleichzeitig / gleichzeitig ausgeführt werden.

Parallelität kann Ihre Anwendung schneller, sauberer und dem Benutzer besser machen. Die Verwendung von Multithreading scheint vielen Entwicklern schwierig zu sein, aber APIs mögen esNSOperation und Dispatch Queues erleichtert die Verwendung von Parallelität und Multithreading in der Anwendung.

Grand Central Versand

GCD ist die am häufigsten verwendete API zum Verwalten von gleichzeitigem Code und zum asynchronen Ausführen von Vorgängen auf Systemebene. GCD stellt Warteschlangen für Aufgaben bereit und verwendet diese. Diese Warteschlangen sind die Datenstruktur, die die FIFO-Terminologie verwenden, dh die Aufgabe an erster Stelle in einer Warteschlange wird zuerst ausgeführt und die Aufgabe an letzter Stelle einer Warteschlange wird zuletzt ausgeführt.

Beispiel: Angenommen, Sie buchen eine Kinokarte. Wenn Sie die letzte Person sind, erhalten Sie die letzte Karte. Wenn jemand nach Ihnen kommt, erhält er eine Karte nach Ihnen.

Versandwarteschlange

Die Versandwarteschlange ist eine einfache Möglichkeit, eine Aufgabe asynchron und gleichzeitig in Ihrer Anwendung auszuführen. Es gibt zwei Arten von Warteschlangen:

  • Serial Queues - Sie speichern Aufgaben in einer Reihe und führen jeweils eine Aufgabe aus.

  • Concurrent Queues - Sie speichern Aufgaben in einer Reihe und führen jeweils eine Aufgabe aus.

Einige der Funktionen, die zum Erstellen oder Abrufen von Warteschlangen verwendet werden, sind:

dispatch_queue_create       
// create a serial or concurrent queue 
dispatch_queue_get_label     
// get the label of a given queue 
dispatch_get_main_queue   
// get the one and only main queue 
dispatch_get_global_queue    
// get one of the global concurrent queues

Hinzufügen von Aufgaben zu den Warteschlangen

Es gibt zwei Arten von Funktionen, mit denen Sie den Warteschlangen Aufgaben hinzufügen können. Sie sind -

Synchronous Functions - -

  • dispatch_once - übergibt die Aufgabe erst, wenn sie über die Anwendungslebensdauer abgelaufen ist.

  • dispatch_sync - sendet eine Aufgabe an die Warteschlange und kehrt erst zurück, wenn die Aufgabe abgeschlossen ist.

Asynchronous Functions - -

  • Dispatch_async - wird eine Aufgabe einreichen und zurückkehren.

  • Dispatch_after - kehrt sofort zurück, verzögert sich jedoch um eine bestimmte Zeit.

  • Dispatch_async - kehrt sofort zurück, aber die Aufgabe wird mehrmals gesendet.

Beispielcode

Im Folgenden finden Sie den Beispielcode zum Hinzufügen von Aufgaben zur Warteschlange.

dispatch_async(dispatch_get_main_queue(), update_block);  
// add update_block to main queue  

dispatch_apply(i, some_queue, work_block)  
// add work_block to some_queue i times  

dispatch_sync(background_queue, blocking_block)  
// add blocking block to background queue and wait for completion

Allgemeines Beispiel für die Verwendung einer Warteschlange

Der folgende Code ist ein Beispiel für die Verwendung einer Warteschlange.

dispatch_async(background_queue, ^ { 
   // Perform code that takes long time, here. 
   Dispatch_async(dispatch_get_main_queue(), ^ { 
      //Some other task, generally UI. 
   }); 
});

Dies ist alles, was wir mit der Parallelitätskontrolle tun werden, da es genug Informationen gibt, bis Sie ein fortgeschrittener iOS-Entwickler werden.

Üben Sie die erlernten Konzepte weiter und versuchen Sie, sie entsprechend Ihren Anforderungen zu modifizieren und zu integrieren.