89 votes

Ce n' @synchronisée ()?

Je viens de créer un singleton méthode, et je voudrais savoir ce que la fonction @synchronized() t, comme je l'utilise souvent, mais ne connaissent pas la signification.

120voto

John Calsbeek Points 19381

Il déclare une section critique autour du bloc de code. Dans le code multithread, @synchronized garantit qu'un seul thread peut exécuter du code dans le bloc à un moment donné.

Si vous n'êtes pas conscient de ce qu'il fait, alors votre demande n'est probablement pas le multithread, et vous n'avez probablement pas besoin de l'utiliser (surtout si le singleton n'est pas thread-safe).

43voto

csano Points 7039

À partir de la documentation d'Apple ici et ici:

@Synchronisé directive est un moyen pratique de créer des mutex serrures à la volée en code Objective-C. L' @synchronisé directive ne fait ce que n'importe quel d'autres mutex lock ferait-il empêche les différents threads de l'acquisition de la même verrou en même temps.

La documentation fournit une mine de renseignements sur ce sujet. Il vaut la peine de prendre le temps de lire, surtout étant donné que vous avez été en utilisant, sans savoir ce qu'il fait.

27voto

HDA Points 2590

L' @synchronized directive est un moyen pratique de créer des mutex verrous à la volée en Objective-C du code.

L' @synchronized directive ne fait ce que n'importe quel autre mutex lock ferait-il empêche les différents fils de l'acquisition de la même serrure en même temps.

Syntaxe:

 @synchronized(key) 
 { 
  // thread-safe code 
 }

Exemple:

 -(void)AppendExisting:(NSString*)val
{
  @synchronized (val) {
      [oldValue stringByAppendingFormat:@"-%@",val];
  }
}

Maintenant, le code ci-dessus est parfaitement thread-safe..Maintenant Plusieurs threads peuvent modifier la valeur.

Ce qui précède est juste un obscur exemple...

6voto

abdus.me Points 1281

@bloc synchronisé automatiquement les poignées de verrouillage et de déverrouillage pour vous. @synchroniser vous avez un implicite de verrouillage associés à l'objet que vous utilisez pour synchroniser. Ici est très instructif de discussion sur ce sujet, veuillez suivre Comment @synchronisé de verrouillage/déverrouillage en Objective-C?

4voto

Matjan Points 889

Excellente réponse ici:

Aider à la compréhension de la méthode de classe de retourner singleton

avec plus d'explication sur le processus de création d'un singleton.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X