See artikkel on masintõlke peegelartikkel, palun klõpsake siia, et hüpata algse artikli juurde.

Vaade: 2976|Vastuse: 2

[Allikas] Kuidas Lazy C#-s hoiab niidid turvalisena

[Kopeeri link]
Postitatud 02.07.2023 21:41:55 | | |
Pärast .NET 4.0 versiooni pakuti .NET raamistikus turvalist laiska laadimistüüpiLaisk
Lazy suudab töötada mitmelõimelises keskkonnas, garanteeritultGetValueFunktsioon täidetakse vaid korra, seega rakendatakseSingletoni režiim

Varem kasutasime kvadratilisi otsustuslukke üksikmustrite rakendamiseks või klasside staatiliste initsialiseerimisfunktsioonide kasutamiseks
Lazy tüübi puhul on see protsess lihtsam ja jõudlus parem

Kui Lazy luuakse, saad määrata lõime paigaldusrežiimi, praegu on kaks režiimi,Ainult avaldamineExcutionAndPublication

Ainult avaldamise režiim


1. Käivita initsialiseerimise funktsioon ja pane see sisemisse kastiKarptüüp, lahendab nullväärtuse hindamise probleemi, kui juhtum on loodud, tagastatakse null,Protsess on lõime-ebaturvaline

2. Määrake, kas m_boxed on tühi, m_boxed on väli, mis on väärtusega salvestatud, kui see on võrdne tühjaga, on see seatud kasti, see meetod võib tagada aatomilisus,Protsess on lõimekindel

3. Kui CreateValue tagastab tühjana, tähendab see, et teised lõimed on juba instantsid loonud, seejärel seatud juba loodud instantsideks

4. Märgi initsialiseerimismeetod initsialiseerituks, mis tavaliselt juhtub samaaegse käivitamise puhul, ja käivita CreateValue mitu korda


Ainult avaldaminerežiimi kasutatakse vastavaltInterlocked.CompareExchange, see klass sisaldab aatomilisuse meetodeidCAS (võrdle ja vaheta)

CAS on teostatud CPU poolt pakutavate aatomiliste käskude abil ning erinevatel käitusversioonidel võivad olla erinevad rakendused
Põimitud spetsiifiline rakendus Natiivses meetodis saavad huvilised sõbrad konkreetset rakendust kontrollida coreclr/jvm koodi kaudu

Selles režiimis,Üksikfunktsioon võib töötada mitu korda, kuid lõpuks on garanteeritud, et saadakse ainult üks instants

ExcutionAndPublication režiim

ExcutionAndPublicationrežiimis kasutatav režiimVolatile+MonitorMonitorOn külllukkLause teostus, Monitori rakendus natiivses koodis, on tugev lukk

MonitorJärjekorra ja lõime une on toetatud, mis tagab, et kogu meetodiplokk täidetakse ühe lõimega olekus


Originaallink:Hüperlingi sisselogimine on nähtav.




Eelmine:ASP.NET erinevus ThreadStaticul, CallContextil ja HttpContextil
Järgmine:SQL Server pärib andmebaasiga seotud ühenduste praegust arvu
 Üürileandja| Postitatud 02.07.2023 21:42:16 |
 Üürileandja| Postitatud 04.07.2023 19:19:45 |
C# jõudlusoptimeerimine: Lazy initsialiseerib Lazy<T> viivitusega
https://www.itsvse.com/thread-7700-1-1.html
Disclaimer:
Kõik Code Farmer Networki poolt avaldatud tarkvara, programmeerimismaterjalid või artiklid on mõeldud ainult õppimiseks ja uurimistööks; Ülaltoodud sisu ei tohi kasutada ärilistel ega ebaseaduslikel eesmärkidel, vastasel juhul kannavad kasutajad kõik tagajärjed. Selle saidi info pärineb internetist ning autoriõiguste vaidlused ei ole selle saidiga seotud. Ülaltoodud sisu tuleb oma arvutist täielikult kustutada 24 tunni jooksul pärast allalaadimist. Kui sulle programm meeldib, palun toeta originaaltarkvara, osta registreerimist ja saa paremaid ehtsaid teenuseid. Kui esineb rikkumist, palun võtke meiega ühendust e-posti teel.

Mail To:help@itsvse.com