Einfache GCD Serielle Queue Beispiel wie FIFO-Blöcke
Lese ich Apple-Dokumentation nach, wie man die serielle Warteschlangen, um sicherzustellen, dass die Aufgaben ausführen, die in einer vorhersehbaren Reihenfolge, aber jetzt bin ich verwirrt zu viel.
Einige, wie ich in der Lage bin zu arbeiten Seriell, aber noch bin ich nicht klar, also brauche ich einfache serielle Beispiel für meine Methoden ausführen Seriell.
Ich teilte meine Funktionalität in 4 Teile, und jetzt wollen Sie Sie ausführen Seriell
[self ReadAllImagesFromPhotosLibrary];
[self WriteFewImagestoDirectory];
[self GettingBackAllImagesFromFolder];
[self MoveToNextView];
InformationsquelleAutor der Frage DreamWatcher | 2013-07-02
Du musst angemeldet sein, um einen Kommentar abzugeben.
Follow-up und Verbesserung der iCoder's Antwort, Sie könnten und sollten, tun die folgende.
Trotz der oben anrufen asyncwerden Sie in der Warteschlange und werden Seriell ausgeführt als DISPATCH_QUEUE_SERIAL Staaten. Der Unterschied zwischen sync und async ist, dass mit syncIhre code anhalten und warten für den block zu beantworten, bevor Sie mit dem folgenden code, wodurch möglicherweise das einfrieren der Benutzeroberfläche, wenn die Ausführungszeit zu lang ist. In der Erwägung, dass mit asyncdie code läuft auf und der block zurückgegeben asynchron.
Jedoch, die Aufgaben, die Sie gespeichert haben, in die DISPATCH_QUEUE_SERIAL warten und ausgeführt werden, einer nach dem anderen in der Reihenfolge in der Sie Hinzugefügt wurden, Dank GCD (Grand Central Dispatch).
InformationsquelleAutor der Antwort Benjamin
Ich denke, der obige code sollte funktionieren, aber stellen Sie sicher, dass das UI-Operationen ausgeführt werden, die in der Haupt-thread. Hoffe, es hilft.
InformationsquelleAutor der Antwort iCoder
Können Sie
NSOperationQueue
mitmaxConcurrentOperationCount
auf 1 gesetzt (oder sogar Abhängigkeit für jede NSOperation, so dass es nicht beginnen, bevor Ihre Abhängigkeit beendet ist).Hier ist NSOperationQueue Klasse Referenz.
Werfen Sie auch einen Blick auf diese Frage.
InformationsquelleAutor der Antwort Dmitry Zhukov
Bin ich nicht viel Kenntnis von bestehenden API für das gleiche zu tun, mit Blöcken, wenn überhaupt.
Aber das gleiche kann getan werden, durch die Definition von Blöcken(Darstellung der Vorgänge, die Sie wollen) in einer Weise, die Sie zeigen, um zum nächsten block zu gehen wenn jeder. Sie können auch die gesamte Verarbeitung in einer separaten Warteschlange.
snippet für die Blöcke ausführen, die in serial Mode
InformationsquelleAutor der Antwort ajonnet
warum nicht versuchen, den GCD, es garantiert, dass die Reihenfolge der Bedienung und hat auch sync und async-Funktionen
InformationsquelleAutor der Antwort Raveen Beemsingh
Hatte ich einige Erfolge mit einem Muster, wie dies in einer ähnlichen Jagd bei Swift 3.0 ...
InformationsquelleAutor der Antwort David Reid