Questo articolo è un articolo speculare di traduzione automatica, clicca qui per saltare all'articolo originale.

Vista: 18907|Risposta: 0

[Fonte] lock: Perché può bloccare solo il riferimento ma non il tipo di valore

[Copiato link]
Pubblicato su 08/12/2016 10:43:37 | | |

Se passi un tipo di valore, verrà bloccato in una scatola, e la prossima volta che il codice verrà eseguito qui, verrà di nuovo bloccato e non sarà lo stesso oggetto due volte, quindi non potrà essere bloccato



Lock(x)
{
  ...
}

Il blocco viene effettivamente eseguito tramite l'oggetto Monitor:

Quanto sopra è equivalente a:

System.Object obj = (System.Object)x;
System.Threading.Monitor.Enter(obj);
prova
{
  ...   
}
finalmente
{
  System.Threading.Monitor.Exit(obj);
}

Poi, per citare le parole originali della MSDN:
Usa Monitor per bloccare oggetti (cioè tipi di riferimento), non tipi di valore. Quando passi una variabile di tipo avalue a Enter, viene riempita come oggetto. Se passi di nuovo la stessa variabile su Invio, viene riempita come oggetto separato e il thread non blocca. In questo caso, il codice che Monitor dovrebbe proteggere non è protetto. Inoltre, quando passi la variabile a Exit, viene creato un altro oggetto separato. Poiché l'oggetto passato a Exit è diverso dall'oggetto passato a Enter, Monitor lancia SynchronizationLockException. Per maggiori informazioni, vedi l'argomento concettuale Monitor.




Precedente:Aggiorna Python 2.6.6 a 2.7.5 sul sistema Centos 6.4
Prossimo:Differenza tra Directory.GetCurrentDirectory e Application.StartupPath
Disconoscimento:
Tutto il software, i materiali di programmazione o gli articoli pubblicati dalla Code Farmer Network sono destinati esclusivamente all'apprendimento e alla ricerca; I contenuti sopra elencati non devono essere utilizzati per scopi commerciali o illegali, altrimenti gli utenti dovranno sostenere tutte le conseguenze. Le informazioni su questo sito provengono da Internet, e le controversie sul copyright non hanno nulla a che fare con questo sito. Devi eliminare completamente i contenuti sopra elencati dal tuo computer entro 24 ore dal download. Se ti piace il programma, ti preghiamo di supportare software autentico, acquistare la registrazione e ottenere servizi autentici migliori. In caso di violazione, vi preghiamo di contattarci via email.

Mail To:help@itsvse.com