Šis raksts ir mašīntulkošanas spoguļraksts, lūdzu, noklikšķiniet šeit, lai pārietu uz oriģinālo rakstu.

Skats: 20027|Atbildi: 0

[Avots] C# bloķēšanas atslēgvārds iezīmē paziņojumu bloku kā kritisku zonu, iegūstot muteksu konkrētam objektam, izpildot paziņojumu, bet...

[Kopēt saiti]
Publicēts 31.12.2015 17:51:01 | | |
Bloķēšanas atslēgvārds iezīmē paziņojumu bloku kā kritisko zonu, ņemot muteksu konkrētam objektam, izpildot paziņojumu un pēc tam atbrīvojot slēdzeni.

Bloķēšanas paziņojumā būtībā tiek izmantoti Monitor.Enter un Monitor.Exit, tas ir, Monitor.Enter(this) tiek izpildīts, kad tiek izpildīta lock(this), un Monitor.Exit(this) tiek izpildīts cirtainā iekavas beigās. Kāda ir tā nozīme, jebkuram objektam atmiņas pirmā daļa ir visu metožu adrese, bet otrā daļa ir indekss. Viņš norāda uz SyncBlock CLR SyncBlock kešatmiņas apgabalā. Ko tas nozīmē? Tas ir, izpildot Monitor.Enter(Object), ja objekta indeksa vērtība ir negatīva, atlasiet SyncBlock no SyncBlock kešatmiņas un ievietojiet tā adresi objekta indeksā. Tas pabeidz bloķēšanu, kas atzīmēta ar objektu, un pārējie pavedieni vēlas vēlreiz veikt Monitor.Enter (objekta) darbību, kas iegūs indeksu ar pozitīvu objektu, un pēc tam gaidīt. Līdz indekss kļūst negatīvs, t.i., pavediens izmanto Monitor.Exit(object), lai indeksu padarītu negatīvu.

Kas jums jāpievērš uzmanība, izmantojot slēdzeni:
1.Lock nevar bloķēt vērtību Null Objekts var norādīt uz null, bet null nav jāatlaiž. (Skatīt arī: Izpratne par pilnu nulli)
2.Lock nevar bloķēt virknes tipu, lai gan tas ir arī atsauces tips. Tā kā virknes tipu CLR "novieto kursoru"
Tas nozīmē, ka visā programmā ir tikai viens jebkuras virknes gadījums, un tas pats objekts attēlo šo tekstu visos darbojošos lietojumprogrammu domēnu pavedienos. Tāpēc, kamēr virknei ar tādu pašu saturu jebkurā lietojumprogrammas procesa vietā tiek ievietota bloķēšana, visi šīs virknes gadījumi lietojumprogrammā tiks bloķēti. Tāpēc vislabāk ir bloķēt privātos vai aizsargātos dalībniekus, kuri netiks saglabāti.
3.LockLock Objekts ir programmas bloka atmiņas robeža
4. Vērtības tipu nevar bloķēt, jo iepriekšējā tekstā "objekts tiek izlaists" sarkanā krāsā, un vērtības tips nav atsauces tips
5.Lock novērš publisku tipu vai objektu bloķēšanu, kurus programma nekontrolē.
Piemēram, ja instance ir publiski pieejama, lock(this) var būt problemātiska, jo nekontrolēts kods var arī bloķēt objektu. Tas var novest pie strupceļa, kur divi vai vairāki pavedieni gaida, lai atbrīvotu vienu un to pašu objektu. Publisko datu tipu bloķēšana (atšķirībā no objektiem) var radīt problēmas tā paša iemesla dēļ.
Izmantojot lock(this), klases dalībnieka mainīgā vērtību var mainīt ar metodi, kas nav kritiskajā zonā

Lietojumprogrammas scenārijs: To bieži izmanto, lai novērstu neskaidrus izņēmumus publisko mainīgo vērtībā, ko izraisa vairāku pavedienu operācijas, lai nodrošinātu operāciju drošību









Iepriekšējo:Win8 startē SQL Server 2012 pakalpojumu
Nākamo:[Ātrums] IP segmenta atvērtā porta skeneris ātram skenēšanas ātrumam !!
Atruna:
Visa programmatūra, programmēšanas materiāli vai raksti, ko publicē Code Farmer Network, ir paredzēti tikai mācību un pētniecības mērķiem; Iepriekš minēto saturu nedrīkst izmantot komerciāliem vai nelikumīgiem mērķiem, pretējā gadījumā lietotājiem ir jāuzņemas visas sekas. Informācija šajā vietnē nāk no interneta, un autortiesību strīdiem nav nekāda sakara ar šo vietni. Iepriekš minētais saturs ir pilnībā jāizdzēš no datora 24 stundu laikā pēc lejupielādes. Ja jums patīk programma, lūdzu, atbalstiet oriģinālu programmatūru, iegādājieties reģistrāciju un iegūstiet labākus oriģinālus pakalpojumus. Ja ir kādi pārkāpumi, lūdzu, sazinieties ar mums pa e-pastu.

Mail To:help@itsvse.com