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

Vaade: 69126|Vastuse: 4

[Allikas] .NET/C# Niidiohutuse kogu (võrdlus)

[Kopeeri link]
Postitatud 06.06.2017 17:13:53 | | |
.NET Framework 1.0-s tutvustatud kogumid on leitavad System.Collections nimeruumist. Need kogumikud, sealhulgas laialdaselt kasutatav ArrayList ja Hashtable, pakuvad mingisugust lõimeturvalisust Synchronized omaduse kaudu, mis tagastab koguga seotud lõimeturvalise ümbrise. Ümbris töötab, lukustades kogu komplekti iga lisamise või eemaldamise operatsiooni jaoks. Seetõttu peab iga lõim, mis püüab kollektsiooni ligi pääseda, ootama, kuni on tema kord lukku saada. See ei ole skaleeritav ja põhjustab märkimisväärset jõudluse langust suurtes kogudes. Lisaks ei välista see disain täielikult vaidlust. Lisateabe saamiseks vaadake MSDN veebilehe järgmist lehte: Sünkroniseerimine üldistes kogudes

.NET Framework 2.0-s tutvustatud koguklass on leitav System.Collections.Generic nimeruumist. Nende kogumisklasside hulka kuuluvad List<T>, Dictionary< TKey, TValue> jne. Need klassid pakuvad kõrgemat tüüpi turvalisust ja jõudlust võrreldes .NET Framework 1.0 klassidega. Kuid .NET Framework 2.0 kogumisklass ei paku lõimede sünkroniseerimist; Kui lisada või eemaldada elemente mitmel lõimel samaaegselt, peab kasutajakood tagama kogu sünkroonimise.

Soovitame kasutada samaaegseid kogumisklasse .NET Framework 4-s, sest need tagavad mitte ainult .NET Framework 2.0 kollektsiooniklasside tüübi turvalisuse, vaid ka tõhusama ja täielikuma lõimeturvalisuse kui .NET Framework 1.0 kogumiku lõimeturvalisus.


Mõned samaaegsed kogumistüübid kasutavad kergeid sünkroniseerimismehhanisme, nagu SpinLock, SpinWait, SemaphoreSlim ja CountdownEvent, mis on .NET Framework 4-s uued. Tavaliselt kasutavad ülaltoodud sünkroniseerimistüübid lühikest aega "hõivatud pöörlemist" enne, kui lõime pannakse tegelikku ooteolekusse. Kui ooteaeg eeldatakse väga lühikeseks, kulutab spin palju vähem arvutusressursse kui ooteaeg, mis hõlmab kerneli konverteerimisi, mis kulutavad palju ressursse. Kogumisklasside puhul, mis kasutavad pööramist, tähendab see efektiivsus, et mitu lõime saavad esemeid väga kiiresti lisada ja eemaldada. Lisateabe saamiseks piiramise ja blokeerimise kohta vaata SpinLock ja SpinWait. ConcurrentQueue<T> ja<T> ConcurrentStack klassid ei kasuta üldse lukke. Selle asemel tuginevad nad lõimede turvalisuse tagamiseks lukustatud operatsioonidele.

Illustreerida

Kuna samaaegsed kogumisklassid toetavad ICollectionit, pakuvad nad rakendusi IsSynchronized ja SyncRoot omadustele, isegi kui need pole omavahel seotud. IsSynchronized tagastab alati false, samas kui SyncRoot on alati null (Visual Basicus pole midagi).

Järgmine tabel loetleb kogu tüübid System.Collections.Concurrent nimeruumis.



liik
kirjeldus
BlockingCollection<T>
Pakub<T> igasugust piiramist ja blokeerimist IProducerConsumerCollectioni rakendamiseks. Lisateabe saamiseks vaata BlockingCollectioni ülevaadet.
ConcurrentDictionary<TKey, TValue>
Võti/väärtus on sõnastiku lõime-ohutu rakendus.
ConcurrentQueue<T>
FIFO (first in, first out) ridade lõimeturvalisuse rakendus.
ConcurrentStack<T>
LIFO (viimase sisse, esimesena välja) virnade lõimeturvaline rakendus.
ConcurrentBag<T>
Lõime-turvaline rakendus ebajärjekorras elementide kogumist.
IProducerConsumerCollection<T>
tüübid tuleb rakendadaBlockingCollectionliidesed, mida kasutatakse







Eelmine:.net/c# itextsharp PDF-koodi genereerimiseks
Järgmine:Install-Package: "MvvmLightLibs" on juba määratletud sõltuvus "CommonServiceLocator" jaoks...
Postitatud 08.11.2017 15:24:45 |
Jah, ma õppisin
 Üürileandja| Postitatud 08.02.2021 10:00:41 |
Loend on<T> lõimekindel, kui loendit iteratsiooni ajal üldse ei muudeta.
 Üürileandja| Postitatud 23.03.2021 11:32:46 |
ConcurrentDictionary toetab uusi ja uuendatud uuendusi
https://www.itsvse.com/thread-2955-1-1.html

 Üürileandja| Postitatud 24.06.2023 14:20:57 |
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