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

Rodinys: 2976|Atsakyti: 2

[Šaltinis] Kaip tingus C# saugo siūlus

[Kopijuoti nuorodą]
Paskelbta 2023-07-02 21:41:55 | | |
Po .NET 4.0 .NET Framework buvo pateiktas saugus tingus įkėlimo tipasTingus
Lazy gali veikti kelių gijų aplinkoje, garantuotaiGauti vertęFunkcija vykdoma tik vieną kartą, taip įgyvendinantViengubas režimas

Anksčiau mes naudojome kvadratinius sprendimo užraktus, kad įgyvendintume pavienius modelius arba panaudotume statines klasių inicijavimo funkcijas
Naudojant "Lazy" tipą, šis procesas yra supaprastintas, o našumas geresnis

Sukūrę tinginį, galite nurodyti sriegio diegimo režimą, šiuo metu yra du režimai,Tik publikacijaExcutionAndPublication

Tik publikavimo režimas


1. Paleiskite inicijavimo funkciją ir įdėkite ją į vidinįDėžėtipas, išspręsti nulinės vertės sprendimo problemą, jei byla buvo sukurta, ji grąžins nulį,Procesas yra nesaugus

2. Nustatykite, ar m_boxed tuščia, m_boxed laukas išsaugotas pagal vertę, jei jis lygus tuščiam, jis nustatytas į dėžutę, šis metodas gali užtikrinti atomiškumą,Procesas yra saugus siūlams

3. Jei CreateValue grįžta tuščia, tai reiškia, kad kitos gijos jau sukūrė egzempliorius, tada nustatykite jau sukurtus egzempliorius

4. Pažymėkite inicijavimo metodą kaip inicijuotą, kuris paprastai įvyksta tuo pačiu metu, ir kelis kartus paleiskite CreateValue


Tik publikacijarežimas naudojamas remiantisInterlocked.CompareExchange, šioje klasėje yra atomiškumo metodaiCAS (Palyginti ir keisti)

CAS įgyvendinamas naudojant procesoriaus pateiktas atomines instrukcijas, o skirtingos vykdymo versijos gali turėti skirtingą įgyvendinimą
Blokuotas konkretus įgyvendinimas Vietiniu metodu suinteresuoti draugai gali patikrinti konkretų įgyvendinimą naudodami coreclr/jvm kodą

Šiuo režimuVieno tono funkcija gali veikti kelis kartus, tačiau galiausiai garantuojama, kad bus gautas tik vienas egzempliorius

ExcutionAndPublication režimas

ExcutionAndPublicationrežimu naudojamas režimasNepastovus+monitoriusMonitoriusTai yraužraktasTeiginio įgyvendinimas, "Monitor" įgyvendinimas gimtajame kode, yra sunkus užraktas

MonitoriusPalaikomas eilės ir gijų miego režimas, kuris gali užtikrinti, kad visas metodo blokas būtų vykdomas vienos gijos būsenoje


Originali nuoroda:Hipersaito prisijungimas matomas.




Ankstesnis:ASP.NET skirtumas tarp "ThreadStatic", "CallContext" ir "HttpContext"
Kitą:SQL serveris užklausia dabartinį ryšių su duomenų baze skaičių
 Savininkas| Paskelbta 2023-07-02 21:42:16 |
 Savininkas| Paskelbta 2023-07-04 19:19:45 |
C# našumo optimizavimas: Lazy inicijuoja Lazy<T> su vėlavimu
https://www.itsvse.com/thread-7700-1-1.html
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