Maison >développement back-end >C++ >Pourquoi l'utilisation de `Lock (this) 'en C # multithread est-elle découragée?
Pourquoi lock(this)
est problématique dans C #
lock(this)
pour protéger l'accès à l'objet si cet objet est accessible au public. Explorons les raisons de cette recommandation.
lock(this)
risques clés de l'utilisation de
Verrouillage incontrôlé: Les objets accessibles au public signifient this
n'importe quel code
lock(this)
Violation de l'encapsulation:
lock
Misonctant du comportement de lock(this)
: Une idée fausse commune est que fait en quelque sorte l'objet en lecture seule. Ceci est incorrect. L'objet agit uniquement comme une clé de verrouillage
object
Verrouillage sur des types immuables:
Exemple illustratif:
<code class="language-csharp">public class Person { public int Age { get; set; } public string Name { get; set; } public void LockThis() { lock (this) { System.Threading.Thread.Sleep(10000); // Simulate a long operation } } }</code>Considérez ce code C #:
LockThis()
this
Cet exemple met en évidence le problème. Alors que Name
maintient le verrou sur lock(this)
, un autre thread pourrait toujours modifier
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!