Acest articol este un articol oglindă al traducerii automate, vă rugăm să faceți clic aici pentru a sări la articolul original.

Vedere: 18907|Răspunde: 0

[Sursă] blocare: De ce poate bloca doar referința, dar nu și tipul de valoare

[Copiază linkul]
Postat pe 08.12.2016 10:43:37 | | |

Dacă treci un tip de valoare, acesta va fi blocat, iar data viitoare când codul rulează aici, va fi din nou blocat și nu va fi același obiect de două ori, deci nu poate fi blocat



Lacăt(x)
{
  ...
}

Blocarea se face de fapt prin obiectul Monitor:

Cele de mai sus sunt echivalente cu:

System.Object obj = (System.Object)x;
System.Threading.Monitor.Enter(obj);
încearcă
{
  ...   
}
în sfârșit
{
  System.Threading.Monitor.Exit(obj);
}

Apoi, pentru a cita cuvintele originale ale MSDN:
Folosește Monitor pentru a bloca obiecte (adică tipuri de referință), nu pentru tipurile de valori. Când pasezi o variabilă de tip valoare către Enter, aceasta este blocată ca un obiect. Dacă treci aceeași variabilă pe Enter din nou, aceasta este blocată ca un obiect separat, iar thread-ul nu blochează. În acest caz, codul pe care Monitorul ar trebui să-l protejeze nu este protejat. Mai mult, când treci variabila la Exit, se creează un alt obiect separat. Deoarece obiectul transmis către Exit este diferit de obiectul transmis către Enter, Monitor aruncă SynchronizationLockException. Pentru mai multe informații, vezi subiectul conceptual Monitors.




Precedent:Actualizează Python 2.6.6 la 2.7.5 pe sistemul Centos 6.4
Următor:Diferența dintre Directory.GetCurrentDirectory și Application.StartupPath
Disclaimer:
Tot software-ul, materialele de programare sau articolele publicate de Code Farmer Network sunt destinate exclusiv scopurilor de învățare și cercetare; Conținutul de mai sus nu va fi folosit în scopuri comerciale sau ilegale, altfel utilizatorii vor suporta toate consecințele. Informațiile de pe acest site provin de pe Internet, iar disputele privind drepturile de autor nu au legătură cu acest site. Trebuie să ștergi complet conținutul de mai sus de pe calculatorul tău în termen de 24 de ore de la descărcare. Dacă îți place programul, te rugăm să susții software-ul autentic, să cumperi înregistrarea și să primești servicii autentice mai bune. Dacă există vreo încălcare, vă rugăm să ne contactați prin e-mail.

Mail To:help@itsvse.com