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

Skats: 2976|Atbildi: 2

[Avots] Kā Lazy in C# saglabā pavedienus drošībā

[Kopēt saiti]
Publicēts 02.07.2023 21:41:55 | | |
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ācijaExcutionAndPublication

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+monitorsMonitorsTas 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.




Iepriekšējo:ASP.NET atšķirība starp ThreadStatic, CallContext un HttpContext
Nākamo:SQL Server vaicā pašreizējo savienojumu skaitu ar datu bāzi
 Saimnieks| Publicēts 02.07.2023 21:42:16 |
 Saimnieks| Publicēts 04.07.2023 19:19:45 |
C# veiktspējas optimizācija: Lazy inicializē Lazy<T> ar aizkavēšanos
https://www.itsvse.com/thread-7700-1-1.html
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