Ta članek je zrcalni članek strojnega prevajanja, kliknite tukaj za skok na izvirni članek.

Pogled: 2976|Odgovoriti: 2

[Vir] Kako lenoba v C# varuje teme

[Kopiraj povezavo]
Objavljeno na 2. 07. 2023 21:41:55 | | |
Po .NET 4.0 je bil v .NET Frameworku na voljo varen tip za leno nalaganjeLen
Lazy lahko deluje v večnitnem okolju, kar je zagotovljenoGetValueFunkcija se izvede le enkrat, s čimer se implementiraSingleton način

V preteklosti smo kvadratne sodne ključavnice uporabljali za implementacijo enojnih vzorcev ali za uporabo statičnih inicializacijskih funkcij razredov
Pri Lazy tipu je ta postopek poenostavljen in zmogljivost boljša

Ko je Lazy ustvarjen, lahko določite način namestitve niti, trenutno sta na voljo dva načina,Samo publikacijaIzgonita in objava

Način PublicationOnly


1. Zaženi funkcijo inicializacije in jo vključi v notranji prostorŠkatlatip, reši problem ničelne vrednostne sodbe, če je primer ustvarjen, bo vrnil ničlo,Postopek je nevaren glede niti

2. Določite, ali je m_boxed prazno, m_boxed je polje shranjeno z vrednostjo; če je enako praznemu, je nastavljeno na boxed, ta metoda lahko zagotovi atomičnost,Postopek je varen za niti

3. Če CreateValue vrne prazno, to pomeni, da so druge niti že ustvarile instance, nato pa nastavile na že ustvarjene primere

4. Označite metodo inicializacije kot inicializirano, kar se običajno zgodi v primeru sočasnega izvajanja, in večkrat zaženite CreateValue


Samo publikacijaNačin se uporablja na podlagiInterlocked.CompareExchange, ta razred vsebuje metode atomskeCAS (primerjava in zamenjava)

CAS je implementiran z uporabo atomskih ukazov, ki jih zagotavlja CPU, različne različice v času izvajanja pa imajo lahko različne implementacije
Specifična implementacija medsebojno zaklenjenih V izvorni metodi lahko zainteresirani prijatelji preverijo specifično implementacijo preko kode coreclr/jvm

V tem načinu,Funkcija za enojno se lahko izvaja večkrat, vendar je na koncu zagotovljeno, da bo dosežena le ena instanca

Način ExcutionAndPublication

Izgonita in objavanačin, uporabljen v tem načinuVolatile+MonitorMonitorJeključavnicaImplementacija te izjave, Monitor implementacija v izvorni kodi, je težka zaklep

MonitorPodprta sta spanja vrste in niti, kar lahko zagotovi, da se celoten blok metode izvaja v enonitnem stanju


Izvirna povezava:Prijava do hiperpovezave je vidna.




Prejšnji:ASP.NET razliko med ThreadStatic, CallContext in HttpContext
Naslednji:SQL Server poizveduje po trenutnem številu povezav do baze podatkov
 Najemodajalec| Objavljeno na 2. 07. 2023 21:42:16 |
 Najemodajalec| Objavljeno na 4. 07. 2023 19:19:45 |
Optimizacija zmogljivosti v C#: Lazy inicializira Lazy<T> z zamikom
https://www.itsvse.com/thread-7700-1-1.html
Disclaimer:
Vsa programska oprema, programski materiali ali članki, ki jih izdaja Code Farmer Network, so namenjeni zgolj učnim in raziskovalnim namenom; Zgornja vsebina ne sme biti uporabljena v komercialne ali nezakonite namene, sicer uporabniki nosijo vse posledice. Informacije na tej strani prihajajo z interneta, spori glede avtorskih pravic pa nimajo nobene zveze s to stranjo. Zgornjo vsebino morate popolnoma izbrisati z računalnika v 24 urah po prenosu. Če vam je program všeč, podprite pristno programsko opremo, kupite registracijo in pridobite boljše pristne storitve. Če pride do kakršne koli kršitve, nas prosimo kontaktirajte po elektronski pošti.

Mail To:help@itsvse.com