Simple GCD Serial Queue exemple comme FIFO utilisant des blocs
J'ai lu dans la documentation d'Apple sur la façon d'Utiliser la série des files d'attente pour s'assurer que les tâches à exécuter dans un ordre prévisible, mais maintenant, je suis confus trop.
Certains comment je suis capable de travailler en série, mais encore je ne suis pas clair, donc j'ai besoin de simple exemple de série pour mes méthodes d'exécuter en série.
J'ai divisé ma fonctionnalités en 4 pièces et que vous souhaitez maintenant à exécuter en Série
[self ReadAllImagesFromPhotosLibrary];
[self WriteFewImagestoDirectory];
[self GettingBackAllImagesFromFolder];
[self MoveToNextView];
source d'informationauteur DreamWatcher
Vous devez vous connecter pour publier un commentaire.
De suivre et d'améliorer la iCoder's réponse, vous pouvez et devez faire ce qui suit.
En dépit de ces appels asyncils seront en file d'attente et exécuté en série comme le DISPATCH_QUEUE_SERIAL unis. La différence entre sync et async est qu'avec syncvotre code de pause et d'attente pour le bloc de réponse avant d'exécuter le code suivant, donc potentiellement le gel de votre INTERFACE utilisateur si le temps d'exécution est longue. Alors qu'avec asyncle code s'exécute sur et le bloc est retourné de manière asynchrone.
Cependant, les tâches que vous avez stockées dans le DISPATCH_QUEUE_SERIAL attendre et être exécutés l'un après l'autre dans l'ordre où ils ont été ajoutés, grâce à PGCD (Grand Central Dispatch).
Je pense que le code ci-dessus devrait fonctionner, mais assurez-vous que l'INTERFACE utilisateur opérations sont exécutées dans le thread principal. Espérons que cela aide.
Vous pouvez utiliser
NSOperationQueue
avecmaxConcurrentOperationCount
la valeur 1 (ou même de la dépendance pour chaque NSOperation, afin de ne pas commencer avant que sa dépendance est fini).Ici est NSOperationQueue Classe de Référence.
Aussi jeter un oeil à cette question.
Je ne suis pas bien au courant de l'existence de l'API pour en faire de même avec les blocs, le cas échéant.
Mais la même chose peut être fait par la définition des blocs(représentant les opérations que vous voulez) de façon à ce qu'ils pointent à bloc suivant pour procéder le cas échéant. Aussi, vous pouvez mettre l'ensemble du traitement dans une autre file d'attente.
extrait de code pour avoir des blocs de l'exécution en mode série
pourquoi ne pas essayer le PGCD, il garantit la séquence de fonctionnement et a également synchroniser et async capacités
J'ai eu un certain succès avec un motif de ce genre dans un semblable chasse Swift 3.0 ...