Тази статия е огледална статия за машинен превод, моля, кликнете тук, за да преминете към оригиналната статия.

Изглед: 58026|Отговор: 2

[Източник] ConcurrentDictionary поддържа нови и актуализирани актуализации

[Копирай линк]
Публикувано в 13.07.2016 г. 11:12:05 ч. | | |
Среда за разработка: .NET 4.0 или по-висока

Забележка:
Пространството на имената System.Collections.Concurrent в рамките на .NET Framework 4.
Както в MSDN документацията, ConcurrentDictionary реализира колекция, безопасна за нишки, която може да бъде достъпвана от няколко нишки едновременно.
ConcurrentDictionary реализира IDictionary<TKey, TValue> и има някои уникални механизми за добавяне, актуализиране на ключ/стойност. (По-долу е обяснение кога и какъв метод да се използва)

Сценарий 1: Добавете нов елемент, само ако ключът не съществува в речника...
Използвайте TryAdd. TryAdd приема ключа и добавената стойност към речника, връща fasle, ако ключът не съществува в речника; Връща вярно, ако е налично.
public bool TryAdd(TKey key, TValue стойност)

Ситуация 2: Актуализирайте съществуващия ключ в Стойността на речника...
Използвайте TryUpdate. Ако речникът притежава този ключ и дава условна актуализация, трябва да даде сравнителна стойност в този метод, която може да се актуализира, когато текущата стойност е еквивалентна на стойността на сравнение (TValue comparValue).
public bool TryUpdate(TKey ключ, TValue newValue, TValue comparisonValue)


Ситуация 3: Трябва да се добави ключ/стойност към речника; Ако ключът не е сигурен дали съществува в речника; Ако съществува, обнови Ако не съществува, добави го...

Използвайте AddOrUpdate. AddOrUpdate има две претоварвания, като двете претоварвания връщат стойността на стойността:
Първият претоварен параметър е AddOrUpdate(TKey, Func<TKey, TValue>, Func<TKey, TValue, TValue>)
Параметрите са Ключ и двама делегати; Целта на първия делегат е да делегира, когато ключът не съществува, и да върне стойността (началната стойност). Тази делегация Func връща началната стойност < ключ>.
Вторият делегат Func < връща Value, key, oldValue и изпълнява първия делегат> ако ключът не съществува в речника (ако съществува, не се изпълнява; Целта е да се даде на стойността началната стойност), а след това ще се върне стойността (началната стойност на стойността); Второто делегиране е метод за промяна на стойността на стойността, който също изисква връщане на стойността (промяна на началната стойност към крайната). Func < връща > Стойност, ключ, oldValue
public TValue AddOrUpdate(TKey, Func<TKey, TValue>, Func<TKey, TValue, TValue>)

                 2. Параметърът на второто претоварване е AddOrUpdate(TKey, TValue, Func<TKey, TValue, TValue>)
Първият параметър е ключ, вторият е когато ключът не съществува, тази стойност е началната стойност на стойността, а третият е делегат за изпълнение на промяната (Func< връща Value, key, oldValue>).
                      public TValue AddOrUpdate(TKey, TValue, Func<TKey, TValue, TValue>)

Ситуация 4: Добавете стойността на ключа към речника, но ако ключът вече съществува, премахнете стойността; В противен случай ще бъде добавен
Първо претоварване: GetOrAdd(TKEY, Func<TKey, TValue>valueFactory)
Първият параметър е ключ, вторият параметър е делегиран Func<value, key>, когато ключът не съществува, променлива се предава като ключ и стойността се променя. и създават ключ и стойност, връщайки стойност.

       2. Второ претоварване: GetOrAdd (TKEY, TValue)
Първият параметър е ключов, а целта на втория параметър е да създаде нова стойност, дадена от ключа, когато тя не съществува. Връща стойност.
public TValue GetOrAdd(TKEY, Func<TKey, TValue>valueFactory)
Обществена телевизия Get Or Add (TKEY, TValue)


Всяка операция на AddOrUpdate и GetOrAdd е метод, който ConcurrentDictionary има за модифициране/записване в речника, което гарантира безопасността на нишките (извършва се без заключване, чрез четене на данни в речника).




Предишен:LINQ мултиусловна заявка, при която се конструира условие
Следващ:Windows под Memcached основни оперативни команди
 Хазяин| Публикувано в 13.09.2016 г. 13:33:25 ч. |
ConcurrentDictionary срещу речник+заключване - Денис Гао
http://www.itsvse.com/thread-3106-1-1.html
(Източник: Мрежа за земеделие на кода)
 Хазяин| Публикувано в 23.03.2021 г. 11:32:18 ч. |
Добави или обнови

или

Адрес на документа:Входът към хиперлинк е видим.
Отричане:
Целият софтуер, програмни материали или статии, публикувани от Code Farmer Network, са само за учебни и изследователски цели; Горното съдържание не трябва да се използва за търговски или незаконни цели, в противен случай потребителите ще понесат всички последствия. Информацията на този сайт идва от интернет, а споровете за авторски права нямат нищо общо с този сайт. Трябва напълно да изтриете горното съдържание от компютъра си в рамките на 24 часа след изтеглянето. Ако ви харесва програмата, моля, подкрепете оригинален софтуер, купете регистрация и получете по-добри услуги. Ако има нарушение, моля, свържете се с нас по имейл.

Mail To:help@itsvse.com