2010-06-29 5 views
3

Existe-t-il un moyen d'exécuter toute une fonction atomique d'objectif-c? Pour autant que je sache, l'utilisation de synchronized ne protège qu'un certain code de code d'être exécuté sur plusieurs threads en même temps. Mais ce que je veux, c'est arrêter TOUT autre thread de faire quelque chose, tant que j'exécute la fonction.Comment créer une fonction atomique dans l'objectif-c

Répondre

3

Il existe une richesse d'informations dans le Threading Programming Guide. Il mentionne spécifiquement d'éviter la synchronisation (ce qui est drôle, car parfois vous ne pouvez pas) mais ils offrent quelques suggestions autour du problème.

Vous aurez de sérieux problèmes avec votre conception si vous commencez à exécuter votre logiciel sur multicœur. C'est une opération TRÈS coûteuse d'arrêter tous les cœurs de courir pour exécuter votre morceau de code. Les mutex, les sémaphores, les événements de boucle d'exécution et les opérations atomiques sont la voie à suivre.

2

Non. Je ne peux pas faire ça. Ou, eh bien, vous pourriez probablement si vous avez plongé assez profondément dans les API Mach (sur Mac OS X de toute façon).

Mais vous ne devriez pas faire cela.

Pourquoi pensez-vous que vous voulez faire cela?

Questions connexes