Šis straipsnis yra veidrodinis mašininio vertimo straipsnis, spauskite čia norėdami pereiti prie originalaus straipsnio.

Rodinys: 18907|Atsakyti: 0

[Šaltinis] užraktas Kodėl galima užrakinti tik nuorodą, bet ne reikšmės tipą

[Kopijuoti nuorodą]
Paskelbta 2016-12-08 10:43:37 | | |

Jei perduosite reikšmės tipą, jis bus įtrauktas į dėžutę, o kitą kartą, kai kodas bus paleistas čia, jis vėl bus dėžutėje ir nebus tas pats objektas du kartus, todėl jo negalima užrakinti



užraktas (x)
{
  ...
}

Užraktas iš tikrųjų atliekamas per monitoriaus objektą:

Tai, kas išdėstyta pirmiau, prilygsta:

System.Object obj = (System.Object)x;
System.Threading.Monitor.Enter(obj);
Pabandykite
{
  ...   
}
Pagaliau
{
  System.Threading.Monitor.Exit(obj);
}

Tada cituoti originalius žodžius MSDN:
Naudokite monitorių, jei norite užrakinti objektus (t. y. nuorodų tipus), o ne reikšmių tipus. Kai perduodate reikšmės tipo kintamąjį Enter, jis įrašomas į lauką kaip objektas. Jei vėl perduosite tą patį kintamąjį Enter, jis bus įrašytas į dėžutę kaip atskiras objektas, o gija neblokuoja. Tokiu atveju kodas, kurį "Monitor" tariamai apsaugo, nėra apsaugotas. Be to, kai perduodate kintamąjį išeiti, sukuriamas dar vienas atskiras objektas. Kadangi objektas, perduotas išeiti, skiriasi nuo objekto, perduoto Enter, monitorius pateikia SynchronizationLockException. Daugiau informacijos rasite konceptualioje temoje Monitoriai.




Ankstesnis:Atnaujinkite Python 2.6.6 į 2.7.5 Centos 6.4 sistemoje
Kitą:Skirtumas tarp Directory.GetCurrentDirectory ir Application.StartupPath
Atsakomybės apribojimas:
Visa programinė įranga, programavimo medžiaga ar straipsniai, kuriuos skelbia Code Farmer Network, yra skirti tik mokymosi ir mokslinių tyrimų tikslams; Aukščiau nurodytas turinys negali būti naudojamas komerciniais ar neteisėtais tikslais, priešingu atveju vartotojai prisiima visas pasekmes. Šioje svetainėje pateikiama informacija gaunama iš interneto, o ginčai dėl autorių teisių neturi nieko bendra su šia svetaine. Turite visiškai ištrinti aukščiau pateiktą turinį iš savo kompiuterio per 24 valandas nuo atsisiuntimo. Jei jums patinka programa, palaikykite autentišką programinę įrangą, įsigykite registraciją ir gaukite geresnes autentiškas paslaugas. Jei yra kokių nors pažeidimų, susisiekite su mumis el. paštu.

Mail To:help@itsvse.com