Cet article est un article miroir de traduction automatique, veuillez cliquer ici pour accéder à l’article original.

Vue: 18907|Répondre: 0

[Source] verrouillage Pourquoi ne peut verrouiller que la référence mais pas le type de valeur

[Copié le lien]
Publié sur 08/12/2016 10:43:37 | | |

Si vous passez un type de valeur, il sera enchaîné, et la prochaine fois que le code s’exécute ici, il sera à nouveau enchaîné, et il ne sera pas le même objet deux fois, donc il ne peut pas être verrouillé



Verrou(x)
{
  ...
}

Le verrouillage se fait en fait via l’objet Monitor :

Ce qui précède est équivalent à :

System.Objet obj = (System.Object)x ;
System.Threading.Monitor.Enter(obj) ;
essaie
{
  ...   
}
finalement
{
  System.Threading.Monitor.Exit(obj) ;
}

Pour citer les mots originaux du MSDN :
Utilisez Monitor pour verrouiller des objets (c’est-à-dire des types de référence), pas des types de valeurs. Lorsque vous passez une variable de type avalue à Entrée, elle est encadrée comme un objet. Si vous passez à nouveau la même variable à Entrée, elle est encadrée comme un objet séparé, et le thread ne bloque pas. Dans ce cas, le code que Monitor est censé protéger n’est pas protégé. De plus, lorsque vous passez la variable à Sortie, un autre objet séparé est créé. Parce que l’objet passé à Sortie est différent de l’objet passé à Entrée, le Moniteur lance SynchronizationLockException. Pour plus d’informations, voir le sujet conceptuel Monitors.




Précédent:Mettre à jour Python 2.6.6 vers 2.7.5 sur le système Centos 6.4
Prochain:Différence entre Directory.GetCurrentDirectory et Application.StartupPath
Démenti:
Tous les logiciels, supports de programmation ou articles publiés par Code Farmer Network sont uniquement destinés à l’apprentissage et à la recherche ; Le contenu ci-dessus ne doit pas être utilisé à des fins commerciales ou illégales, sinon les utilisateurs assumeront toutes les conséquences. Les informations sur ce site proviennent d’Internet, et les litiges de droits d’auteur n’ont rien à voir avec ce site. Vous devez supprimer complètement le contenu ci-dessus de votre ordinateur dans les 24 heures suivant le téléchargement. Si vous aimez le programme, merci de soutenir un logiciel authentique, d’acheter l’immatriculation et d’obtenir de meilleurs services authentiques. En cas d’infraction, veuillez nous contacter par e-mail.

Mail To:help@itsvse.com