Looking for ios Keywords? Try Ask4Keywords

iOSConcurrence


Introduction

Rubrique connexe: Dispatch Grand Central

Syntaxe

  • dispatch_async - Exécute un bloc de code dans une file d'attente séparée et n'arrête pas la file d'attente en cours. Si la file d'attente se trouve sur un thread différent de celui sur lequel on a appelé dispatch_async, le code du bloc s'exécutera alors que le code est exécuté après l'exécution de dispatch_async
  • dispatch_sync - exécute un bloc de code dans une file d' attente séparée, et ne se limite la file d' attente en cours. Si la file d'attente se trouve sur un thread différent de celui sur lequel on a appelé dispatch_async, le code du bloc s'exécutera et son exécution sur le thread où la méthode a été appelée ne reprendra qu'après la fin

Paramètres

queue La file d'attente dans laquelle le code dans le bloc de distribution sera exécuté. Une file d'attente est comme (mais pas exactement comme) un thread; le code dans différentes files d'attente peut s'exécuter en parallèle. Utilisez dispatch_get_main_queue pour obtenir la file d'attente du thread principal Pour créer une nouvelle file d'attente, qui à son tour crée un nouveau thread, utilisez dispatch_queue_create("QUEUE_NAME", DISPATCH_QUEUE_CONCURRENT) . Le premier paramètre est le nom de la file d'attente, qui est affiché dans le débogueur si vous faites une pause pendant que le bloc est toujours en cours d'exécution. Le second paramètre n'a pas d'importance à moins que vous ne souhaitiez utiliser la même file d'attente pour plusieurs appels à dispatch_async ou dispatch_sync . Il décrit ce qui se passe lorsqu'un autre bloc est placé dans la même file d'attente. DISPATCH_QUEUE_CONCURRENT provoquera l'exécution des deux blocs en même temps, tandis que DISPATCH_QUEUE_SERIAL fera attendre le second bloc pour terminer le deuxième bloc
bloc Le code dans ce bloc s'exécutera dans la file d' queue la file d' queue ; mettre le code que vous souhaitez exécuter dans la file d'attente séparée ici. Un conseil utile: si vous écrivez ceci dans Xcode et que l'argument de bloc a le contour bleu, double-cliquez sur l'argument et Xcode créera automatiquement un bloc vide (cela s'applique à tous les arguments de bloc de n'importe quelle fonction ou méthode)

Remarques

Chaque fois que vous faites quelque chose sur un thread séparé, ce qui se produit lors de l'utilisation de files d'attente, il est important de maintenir la sécurité des threads. Certaines méthodes, en particulier celles de UIView s, peuvent ne pas fonctionner et / ou ne peuvent pas tomber en panne sur des threads autres que le thread principal. Veillez également à ne rien modifier (variables, propriétés, etc.) qui est également utilisé sur le thread principal, à moins que vous ne teniez compte de cette modification.

Concurrence Exemples Liés