Grand Central Dispatch

Grand Central Dispatch ist ein API, mit dem sich asynchron und parallel zu verarbeitende Aufgaben (Code Blöcke) ausführen lassen. Die synchrone oder serielle Abarbeitung von Aufgaben ist auch möglich.

Zentral ist das Konzept der Dispatch Queue. Dabei handelt es sich um eine Warteschlange für Aufgaben. Mehrere verschiedene Instanzen von Dispatch Queues stehen zur Verfügung. Diese haben unterschiedliche Eigenschaften (z.B. serielle oder tatsächlich parallele Abarbeitung der Aufgaben, Priorität). Dispatch Queues können angehalten und wieder gestartet werden.

Eine Dispatch Group referenziert mehrere Aufgaben und erlaubt es, dass der Programmablauf auf die Abarbeitung aller dieser Aufgaben wartet. Die an einer Dispatch Group beteiligten Aufgaben können durch mehrere Dispatch Queues verarbeitet werden.

Barrieren stellen eine weitere Möglichkeit der Synchronisierung dar. Eine als Barriere in eine Dispatch Queue eingereihte Aufgabe wird erst dann ausgeführt, wenn alle vorher eingefügten Aufgaben beendet sind. Erst wenn die Ausführung der Barriere geendet hat, wird die Ausführung nachher eingefügter Aufgaben begonnen.

Außerdem stehen Semaphore (siehe Semaphor) zur Verfügung, um Aufgaben zu synchronisieren.

Es gibt vorgefertigte Klassen von Aufgaben für die Verarbeitung von Dateien (asynchrones Lesen und Schreiben).


Quellen

https://developer.apple.com/library/mac/#documentation/Performance/Reference/GCD_libdispatch_Ref/Reference/reference.html