NSNotificationCenter et GCD

CeetixCeetix Membre
avril 2012 modifié dans API UIKit #1
J'aimerai savoir si pour vous, écrire ce code est thread approved :


[color=#04afc8]dispatch_async[/color][color=#ffffff]([/color]dispatch_get_main_queue[color=#ffffff](), ^{[/color]<br />
[color=#04afc8][color=#ffffff]			[[[/color]NSNotificationCenter[color=#ffffff] [/color]defaultCenter[color=#ffffff]] [/color]postNotificationName[color=#ffffff]:[/color][color=#e2454c]@&quot;traitmentDidEnd&quot;[/color][color=#ffffff] [/color]object[color=#ffffff]:[/color][color=#c0399a]nil[/color][color=#ffffff]];[/color][/color]<br />
[color=#ffffff]});[/color]




J'ai ouà¯e dire que ce n'était thread safe mais je suis tombé sur ce doc et je suis un peu perdu sur quoi/qui croire.
Mots clés:

Réponses

  • Sur mon dernier projet j'avais dissocier mes trends gérés avec GCD de mon NotificationCenter pour les mêmes raisons que tu énonces.



    Je suis curieux aussi alors image/tongue.png' class='bbc_emoticon' alt=':P' />
  • zoczoc Membre
    A priori, tant que tes appels au notification center sont effectués sur le thread principal (celui qui gère le GUI) uniquement (donc exclusivement sur la "main queue") tu n'as pas de problème de threads et de synchronisation, puisque par définition les appels seront sérialisés sur la main queue (qui n'est pas une queue "concurrente", donc il n'y a pas plusieurs threads qui exécutent les taches en parallèle).



    Le fait que le dispatch soit "async" signifie uniquement que le retour de l'appel de la fonction est immédiat même si le bloc n'est pas exécuté immédiatement. Ca ne signifie pas que plusieurs blocs (sur la main queue) seront exécutés en parallèle.
Connectez-vous ou Inscrivez-vous pour répondre.