Ця стаття є дзеркальною статтею машинного перекладу, будь ласка, натисніть тут, щоб перейти до оригінальної статті.

Вид: 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 key, TValue newValue, TValue comparValue)


Ситуація 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>).
                      Публічне ТВалю Доповнення або Оновлення (TKey, TValue, Func<TKey, TValue, TValue>)

Ситуація 4: Додайте значення ключа до словника, але якщо ключ уже існує, видаліть значення; Інакше його додадуть
Перше перевантаження: GetOrAdd(TKEY, Func<TKey, TValue>valueFactory)
Перший параметр — ключ, другий — делегований Func<value, key>, коли ключ не існує, змінна передається як ключ, і значення змінюється. і створити ключ і значення, повертаючи значення.

       2. Друге перевантаження: GetOrAdd (TKEY, TValue)
Перший параметр — ключ, а мета другого — створити нове значення, яке задається ключем, коли воно не існує. Повертає значення.
публічне телебачення GetOrAdd(TKEY, Func<TKey, TValue>valueFactory)
публічне телебачення GetOrAdd(TKEY, TValue)


Кожна операція AddOrUpdate та GetOrAdd — це метод, який ConcurrentDictionary використовує для модифікації/запису до словника, що забезпечує безпеку потоків (це відбувається без блокування, читаючи дані зі словника).




Попередній:LINQ-багатоумовний запит, де конструюється умова
Наступний:Windows нижче Memcached базових операційних команд
 Орендодавець| Опубліковано 13.09.2016 13:33:25 |
ConcurrentDictionary vs. Dictionary+Locking - Денніс Гао
http://www.itsvse.com/thread-3106-1-1.html
(Джерело: Мережа сільського господарства кодів)
 Орендодавець| Опубліковано 23.03.2021 11:32:18 |
Додати або оновити

або

Адреса документа:Вхід за гіперпосиланням видно.
Застереження:
Усе програмне забезпечення, програмні матеріали або статті, опубліковані Code Farmer Network, призначені лише для навчання та досліджень; Вищезазначений контент не повинен використовуватися в комерційних чи незаконних цілях, інакше користувачі несуть усі наслідки. Інформація на цьому сайті надходить з Інтернету, і спори щодо авторських прав не мають до цього сайту. Ви повинні повністю видалити вищезазначений контент зі свого комп'ютера протягом 24 годин після завантаження. Якщо вам подобається програма, будь ласка, підтримуйте справжнє програмне забезпечення, купуйте реєстрацію та отримайте кращі справжні послуги. Якщо є будь-яке порушення, будь ласка, зв'яжіться з нами електронною поштою.

Mail To:help@itsvse.com