Denne artikkelen er en speilartikkel om maskinoversettelse, vennligst klikk her for å hoppe til originalartikkelen.

Utsikt: 58026|Svare: 2

[Kilde] ConcurrentDictionary støtter nye og oppdaterte oppdateringer

[Kopier lenke]
Publisert på 13.07.2016 11:12:05 | | |
Utviklingsmiljø: .NET 4.0 eller høyere

Merk:
System.Collections.Concurrent-navnerommet i .NET Framework 4.
Som i MSDN-dokumentasjonen implementerer ConcurrentDictionary en trådsikker samling som kan nås av flere tråder samtidig.
ConcurrentDictionary implementerer IDictionary<TKey, TValue>, og har noen unike mekanismer for å legge til og oppdatere nøkkel/verdi. (Nedenfor er en forklaring på når og hvilken metode du bør bruke)

Scenario 1: Legg til et nytt element, bare hvis nøkkelen ikke finnes i ordboken...
Bruk TryAdd. TryAdd aksepterer nøkkelen og verdien lagt til ordboken, returnerer fasle hvis nøkkelen ikke finnes i ordboken; Returnerer true hvis det er til stede.
offentlig bool TryAdd (TKey key, TValue value)

Situasjon 2: Oppdater den eksisterende nøkkelen i ordbokens Verdi...
Bruk TryUpdate. Hvis ordboken har denne nøkkelen og gir en betinget oppdatering, bør den gi en sammenligningsverdi i denne metoden som kan oppdateres når den nåværende verdien er ekvivalent med sammenligningsverdien (TValue comparisonValue).
offentlig bool TryUpdate(TKey key, TValue newValue, TValue comparisonValue)


Situasjon 3: En nøkkel/verdi må legges til i ordboken; Hvis nøkkelen ikke er sikker på om den finnes i ordboken; Hvis den finnes, oppdater Hvis den ikke finnes, legg den til...

Bruk AddOrUpdate. AddOrUpdate har to overbelastninger, og de to overbelastningene returnerer verdien av verdi:
Den første overbelastede parameteren er AddOrUpdate(TKey, Func<TKey, TValue>, Func<TKey, TValue, TValue>)
Parametrene er nøkkel og to delegater; Formålet med den første delegaten er å delegere når nøkkelen ikke eksisterer og returnere verdien (initialverdien). Denne delegasjonsfuncen returnerer < startverdi, nøkkel>.
Den andre delegaten Func < returnerer Value, key, oldValue> og utfører den første delegaten hvis nøkkelen ikke finnes i ordboken (hvis den finnes, kjører den ikke; Hensikten er å gi verdien startverdien), og deretter returnerer den verdien (startverdien til verdien); Den andre delegasjonen er en metode for å endre verdien, som også krever returverdi (endre startverdien til sluttverdien). Func < returnere > Value, key, oldValue
offentlig TValue AddOrUpdate(TKey, Func<TKey, TValue>, Func<TKey, TValue, TValue>)

                 2. Parameteren for den andre overbelastningen er AddOrUpdate(TKey, TValue, Func<TKey, TValue, TValue>)
Den første parameteren er nøkkelen, den andre er når nøkkelen ikke eksisterer, denne verdien er den opprinnelige verdien av verdien, og den tredje er delegat for å utføre endringen (Func< returnerer Verdi, nøkkel, gammelVerdi>).
                      offentlig TValue AddOrUpdate(TKey, TValue, Func<TKey, TValue, TValue>)

Situasjon 4: Legg til nøkkelverdien i ordboken, men hvis nøkkelen allerede eksisterer, fjern verdien; Ellers vil det bli lagt til
Første overbelastning: GetOrAdd(TKEY, Func<TKey, TValue>valueFactory)
Den første parameteren er nøkkel, den andre parameteren delegeres Func<verdi, nøkkel>, når nøkkelen ikke eksisterer, sendes en variabel som nøkkel, og verdien endres. og skape en nøkkel og verdi, som returnerer en verdiverdi.

       2. Andre overbelastning: GetOrAdd (TKEY, TValue)
Den første parameteren er nøkkel, og formålet med den andre parameteren er å lage en ny verdi gitt av nøkkelen når den ikke eksisterer. Avkastningsverdi.
offentlig TValue GetOrAdd(TKEY, Func<TKey, TValue>valueFactory)
offentlig TValue GetOrAdd(TKEY,TValue)


Hver operasjon i AddOrUpdate og GetOrAdd er en metode som ConcurrentDictionary har for å endre/skrive til ordboken, noe som sikrer trådsikkerhet (det gjøres på en låsløs måte, ved å lese data i ordboken).




Foregående:LINQ multi-betinget spørring hvor betingelsen konstrueres
Neste:Windows under Memcachede grunnleggende operasjonskommandoer
 Vert| Publisert på 13.09.2016 13:33:25 |
ConcurrentDictionary vs. Dictionary+Locking - Dennis Gao
http://www.itsvse.com/thread-3106-1-1.html
(Kilde: Code Agriculture Network)
 Vert| Publisert på 23.03.2021 11:32:18 |
Ansvarsfraskrivelse:
All programvare, programmeringsmateriell eller artikler publisert av Code Farmer Network er kun for lærings- og forskningsformål; Innholdet ovenfor skal ikke brukes til kommersielle eller ulovlige formål, ellers skal brukerne bære alle konsekvenser. Informasjonen på dette nettstedet kommer fra Internett, og opphavsrettstvister har ingenting med dette nettstedet å gjøre. Du må fullstendig slette innholdet ovenfor fra datamaskinen din innen 24 timer etter nedlasting. Hvis du liker programmet, vennligst støtt ekte programvare, kjøp registrering, og få bedre ekte tjenester. Hvis det foreligger noen krenkelse, vennligst kontakt oss på e-post.

Mail To:help@itsvse.com