Šis raksts ir mašīntulkošanas spoguļraksts, lūdzu, noklikšķiniet šeit, lai pārietu uz oriģinālo rakstu.

Skats: 58026|Atbildi: 2

[Avots] ConcurrentDictionary atbalsta jaunus un atjauninātus atjauninājumus

[Kopēt saiti]
Publicēts 13.07.2016 11:12:05 | | |
Izstrādes vide: .NET 4.0 vai jaunāka versija

Piezīme:
System.Collections.Concurrent nosaukumvieta .NET Framework 4.
Tāpat kā MSDN dokumentācijā, ConcurrentDictionary ievieš pavedienu drošu kolekciju, kurai vienlaikus var piekļūt vairāki pavedieni.
ConcurrentDictionary ievieš IDictionary<TKey, TValue>, un tam ir daži unikāli mehānismi atslēgas/vērtības pievienošanai, atjaunināšanai. (Zemāk ir paskaidrojums par to, kad un kādu metodi izmantot)

1. scenārijs: pievienojiet jaunu vienumu tikai tad, ja atslēga vārdnīcā neeksistē...
Izmantojiet TryAdd. TryAdd pieņem vārdnīcai pievienoto atslēgu un vērtību, atgriež fasle, ja atslēga vārdnīcā neeksistē; Atgriež patiesu, ja tāds ir.
publiskais bool TryAdd(TKey atslēga, TValue vērtība)

2. situācija: atjauniniet esošo atslēgu vārdnīcas vērtībā...
Izmantojiet TryUpdate. Ja vārdnīcai ir šī atslēga un tā sniedz nosacītu atjauninājumu, tai šajā metodē jānorāda salīdzinājuma vērtība, ko var atjaunināt, ja pašreizējā vērtība ir līdzvērtīga salīdzinājuma vērtībai (TValue comparisonValue).
publiskais bool TryUpdate(TKey key, TValue newValue, TValue comparisonValue)


3. situācija: vārdnīcai jāpievieno atslēga/vērtība; Ja atslēga nav pārliecināta, vai tā pastāv vārdnīcā; Ja tas pastāv, atjauniniet Ja tas nepastāv, pievienojiet to...

Izmantojiet AddOrUpdate. AddOrUpdate ir divas pārslodzes, un divas pārslodzes atgriež vērtības vērtību:
Pirmais pārslogotais parametrs ir AddOrUpdate(TKey, Func<TKey, TValue>, Func<TKey, TValue, TValue>)
Parametri ir atslēga un divi delegāti; Pirmā pārstāvja mērķis ir deleģēt, kad atslēgas nav, un atgriezt vērtību (sākotnējo vērtību) Šī deleģēšana Func atgriež < sākotnējo vērtību key>.
Otrais pārstāvis Func < atgriež Value, key, oldValue> un izpilda pirmo pārstāvi, ja atslēgas vārdnīcā nav (ja tāda pastāv, tā nedarbojas; Mērķis ir piešķirt vērtībai sākotnējo vērtību), un tad tas atgriezīs vērtību (vērtības sākotnējo vērtību); Otrā deleģēšana ir vērtības vērtības maiņas metode, kurai nepieciešama arī atgriešanās vērtība (mainiet sākotnējo vērtību uz galīgo vērtību). Func < atgriezt > Value, key, oldValue
publiskais TValue AddOrUpdate (TKey, Func<TKey, TValue>, Func<TKey, TValue, TValue>)

                 2. Otrās pārslodzes parametrs ir AddOrUpdate(TKey, TValue, Func<TKey, TValue, TValue>)
Pirmais parametrs ir atslēga, otrais ir tad, kad atslēga nepastāv, šī vērtība ir vērtības sākotnējā vērtība, un trešais ir deleģēts, lai izpildītu izmaiņas (Func< atgriež Value, key, oldValue>).
                      publiskais TValue AddOrUpdate (TKey, TValue, Func<TKey, TValue, TValue>)

4. situācija: Pievienojiet atslēgas vērtību vārdnīcai, bet, ja atslēga jau pastāv, izņemiet vērtību; Pretējā gadījumā tas tiks pievienots
Pirmā pārslodze: GetOrAdd(TKEY, Func<TKey, TValue>valueFactory)
Pirmais parametrs ir atslēga, otrais parametrs tiek deleģēts Func<value, key>, kad atslēga nepastāv, mainīgais tiek nodots kā atslēga, un vērtība tiek mainīta. un izveidojiet atslēgu un vērtību, atgriežot vērtības vērtību.

       2. Otrā pārslodze: GetOrAdd (TKEY, TValue)
Pirmais parametrs ir atslēga, un otrā parametra mērķis ir izveidot jaunu vērtību, ko dod atslēga, kad tā nepastāv. Atgriež vērtību.
publiskais TValue GetOrAdd(TKEY,Func<TKey, TValue>valueFactory)
publiskais TValue GetOrAdd(TKEY,TValue)


Katra AddOrUpdate un GetOrAdd darbība ir metode, kas ConcurrentDictionary ir vārdnīcas modificēšanai / rakstīšanai, kas nodrošina pavediena drošību (tas tiek darīts bez bloķēšanas veidā, lasot datus vārdnīcā).




Iepriekšējo:LINQ daudznosacījumu vaicājums, kurā tiek veidots nosacījums
Nākamo:Windows zem Memcached pamata operāciju komandām
 Saimnieks| Publicēts 13.09.2016 13:33:25 |
ConcurrentDictionary vs. Dictionary + Locking - Dennis Gao
http://www.itsvse.com/thread-3106-1-1.html
(Avots: Code Agriculture Network)
 Saimnieks| Publicēts 23.03.2021 11:32:18 |
Atruna:
Visa programmatūra, programmēšanas materiāli vai raksti, ko publicē Code Farmer Network, ir paredzēti tikai mācību un pētniecības mērķiem; Iepriekš minēto saturu nedrīkst izmantot komerciāliem vai nelikumīgiem mērķiem, pretējā gadījumā lietotājiem ir jāuzņemas visas sekas. Informācija šajā vietnē nāk no interneta, un autortiesību strīdiem nav nekāda sakara ar šo vietni. Iepriekš minētais saturs ir pilnībā jāizdzēš no datora 24 stundu laikā pēc lejupielādes. Ja jums patīk programma, lūdzu, atbalstiet oriģinālu programmatūru, iegādājieties reģistrāciju un iegūstiet labākus oriģinālus pakalpojumus. Ja ir kādi pārkāpumi, lūdzu, sazinieties ar mums pa e-pastu.

Mail To:help@itsvse.com