Warum sollte jemand jemals dispatch_sync
verwenden, wenn der Block warten muss, bis der Haupt-Thread fertig ist. Was ist der Vorteil der Verwendung dieser Funktion, anstatt Code in-line zu schreiben (ohne Block und außerhalb von Grand Central Dispatch). Ich mag falsch verstehen, was dispatch_sync
tatsächlich tut. Danke.
dispatch_sync
macht was Sie denken - es sendet den Block an die angegebene Warteschlange und blockiert die aktuelle Warteschlange, bis der Block ausgeführt wurde. Die Hauptwarteschlange / der Haupt-Thread ist nicht speziell involviert, es sei denn, Sie leiten sie entweder dorthin oder von dort ab.
Sie würden es also in der Regel verwenden, wenn eine Operation in einer anderen Warteschlange / einem anderen Thread ausgeführt werden muss (z. B. eine SQLite- oder OpenGL-Operation), Sie aber entweder das Ergebnis der Operation benötigen oder einfach wissen müssen wurde für Funktionalität Begriffe abgeschlossen.
Das Muster:
%Vor%ist eine bessere Übung, ist aber nicht wirklich etwas, das man am Ende einfach ankleben kann.
Sie könnten dispatch_async verwenden, um eine gleichzeitige Warteschlange zu starten, und innerhalb des Blocks, der diesem Aufruf zugeordnet ist, können Sie dispatch_sync verwenden, um eine Reihe von Aufgaben in einer zweiten Warteschlange zu starten. Dies würde alles passieren, ohne die Hauptwarteschlange zu blockieren.
Tags und Links ios grand-central-dispatch macos