Contenu du cours
C# Avancé Avec .NET
C# Avancé Avec .NET
L'Instruction Lock
Lorsque vous travaillez avec plusieurs threads, il peut y avoir des situations où plusieurs threads essaient d'accéder et de mettre à jour une ressource en même temps. Une ressource peut être n'importe quoi, par exemple une variable, un fichier, ou même une ressource distante qui est accédée via une API.
De telles situations sont appelées "conditions de course" car les threads se disputent généralement la même ressource et modifier la même ressource en même temps peut conduire à des résultats imprévisibles et incohérents.
Nous pouvons nous assurer qu'il n'y a pas de conditions de course dans notre application en entourant le code avec des instructions lock
partout où il est prévu que plusieurs threads pourraient essayer d'exécuter ces instructions en même temps.
Dans le cas où plusieurs threads essaient d'accéder à une ressource ou d'exécuter un morceau de code entouré d'un lock
, ils sont mis en file d'attente et forcés d'accéder à la ressource un par un, éliminant ainsi toute chance de condition de course.
La syntaxe pour une instruction lock est :
index
object keyObject = new object(); lock(keyObject) { // code to execute }
Ici, keyObject
est une instance de la classe object
, et il sert de clé qui assure la synchronisation entre plusieurs threads. Cet objet doit être le même pour tous les threads, il est donc généralement conseillé d'en faire soit un membre statique, soit de le rendre accessible à tous les threads sans aucune modification.
La vidéo suivante démontre l'utilisation de l'instruction lock :
1. Quel est le but de l'instruction lock en C# ?
2. Quel mot-clé est utilisé pour définir une section critique de code protégée par un verrou ?
Merci pour vos commentaires !