Pēc .NET 4.0 .NET Framework tika nodrošināts drošs slinks ielādes veidsSlinki Lazy spēj darboties vairāku pavedienu vidē, garantētiIegūt vērtībuFunkcija tiek izpildīta tikai vienu reizi, tādējādi īstenojotVientuļā režīms
Agrāk mēs izmantojām kvadrātveida spriedumu slēdzenes, lai ieviestu singletona modeļus vai izmantotu klašu statiskās inicializācijas funkcijas Izmantojot Lazy tipu, šis process ir vienkāršots un veiktspēja ir labāka
Kad tiek izveidots Lazy, varat norādīt vītnes instalēšanas režīmu, pašlaik ir divi režīmi,Tikai publikācija,ExcutionAndPublication
Režīms Tikai publikācija
1. Palaidiet inicializācijas funkciju un ievietojiet to iekšējāKastetips, atrisināt nulles vērtības sprieduma problēmu, ja lieta ir izveidota, tā atgriezīsies nulle,Process ir nedrošs
2. Nosakiet, vai m_boxed ir tukšs, m_boxed lauks, kas saglabāts pēc vērtības, ja tas ir vienāds ar tukšu, tas ir iestatīts kastē, šī metode var nodrošināt atomiskumu,Process ir drošs pavedieniem
3. Ja CreateValue atgriežas tukšs, tas nozīmē, ka citi pavedieni jau ir izveidojuši instances, pēc tam iestatītas uz jau izveidotām instancēm
4. Atzīmējiet inicializācijas metodi kā inicializētu, kas parasti notiek vienlaicīgas palaišanas gadījumā, un palaidiet CreateValue vairākas reizes
Tikai publikācijarežīms tiek izmantots, pamatojoties uzInterlocked.CompareExchange, šī klase satur atomiskuma metodesCAS(Salīdzināt un apmainīt)
CAS tiek ieviests, izmantojot CPU nodrošinātās atomu instrukcijas, un dažādām izpildlaika versijām var būt atšķirīgas implementācijas Savstarpēji bloķēta specifiska ieviešana Vietējā metodē ieinteresētie draugi var pārbaudīt konkrēto ieviešanu, izmantojot coreclr / jvm kodu
Šajā režīmāViena funkcija var darboties vairākas reizes, bet galu galā tiek garantēts, ka tiks iegūts tikai viens gadījums
ExcutionAndPublication režīms
ExcutionAndPublicationrežīmā izmantotais režīmsGaistošs+monitors,MonitorsTas irslēdzenePaziņojuma ieviešana, Monitor ieviešana vietējā kodā, ir smaga bloķēšana
MonitorsTiek atbalstīts rindas un pavedienu miega režīms, kas var nodrošināt, ka viss metodes bloks tiek izpildīts viena pavediena stāvoklī
Oriģinālā saite:Hipersaites pieteikšanās ir redzama. |