Cet article est un article miroir de traduction automatique, veuillez cliquer ici pour accéder à l’article original.

Vue: 58026|Répondre: 2

[Source] ConcurrentDictionary prend en charge les mises à jour nouvelles et mises à jour

[Copié le lien]
Publié sur 13/07/2016 11:12:05 | | |
Environnement de développement : .NET 4.0 ou supérieur

Note :
L’espace de noms System.Collections.Concurrent dans .NET Framework 4.
Comme dans la documentation MSDN, ConcurrentDictionary implémente une collection thread-safe accessible simultanément par plusieurs threads.
ConcurrentDictionary implémente IDictionary<TKey, TValue>, et dispose de mécanismes uniques pour additionner, mettre à jour clé/valeur. (Voici une explication du moment et de la méthode à utiliser)

Scénario 1 : Ajouter un nouvel élément, seulement si la clé n’existe pas dans le dictionnaire...
Utilisez TryAdd. TryAdd accepte la clé et la valeur ajoutées au dictionnaire, renvoie le fasle si la clé n’existe pas dans le dictionnaire ; Retour vrai s’il est présent.
public bool TryAdd(clé TKey, valeur TValue)

Situation 2 : Mettre à jour la clé existante dans la Valeur du dictionnaire...
Utilisez TryUpdate. Si le dictionnaire possède cette clé et fournit une mise à jour conditionnelle, il devrait donner une valeur de comparaison dans cette méthode qui peut être mise à jour lorsque la valeur actuelle est équivalente à la valeur de comparaison (TValue comparisonValue).
public bool TryUpdate(TKey key, TValue newValue, TValue comparisonValue)


Situation 3 : Une clé/valeur doit être ajoutée au dictionnaire ; Si la clé n’est pas certaine d’exister dans le dictionnaire ; Si ça existe, mise à jour Si ça n’existe pas, ajoutez-le...

Utilisez AddOrUpdate. AddOrUpdate comporte deux surcharges, et ces deux surcharges retournent la valeur de la valeur :
Le premier paramètre surchargé est AddOrUpdate(TKey, Func<TKey, TValue>, Func<TKey, TValue, TValue>)
Les paramètres sont : Clé et deux délégués ; Le but du premier délégué est de déléguer lorsque la clé n’existe pas et de retourner la valeur (valeur initiale). Cette fonction de délégation retourne < valeur initiale, la clé>.
Le second délégué Func < retourne Value, key, oldValue> et exécute le premier délégué si la clé n’existe pas dans le dictionnaire (si elle existe, elle ne s’exécute pas ; Le but est de donner à la valeur la valeur initiale), puis elle retournera la valeur (la valeur initiale de la valeur) ; La seconde délégation est une méthode pour modifier la valeur de la valeur, ce qui nécessite également de retourner la valeur (changer la valeur initiale par la valeur finale). Func < retourner la > Value, key, oldValue
public TValue AddOrUpdate(TKey, Func<TKey, TValue>, Func<TKey, TValue, TValue>)

                 2. Le paramètre de la seconde surcharge est AddOrUpdate(TKey, TValue, Func<TKey, TValue, TValue>)
Le premier paramètre est clé, le second est lorsque la clé n’existe pas, cette valeur est la valeur initiale de la valeur, et le troisième est le délégué est d’exécuter le changement (Func< retourne Value, key, oldValue>).
                      public TValue AddOrUpdate(TKey, TValue, Func<TKey, TValue, TValue>)

Situation 4 : Ajouter la valeur de la clé au dictionnaire, mais si la clé existe déjà, retirer la valeur ; Sinon, il sera ajouté
Première surcharge : GetOrAdd(TKEY, Func<TKey, TValue>valueFactory)
Le premier paramètre est la clé, le second est délégué Func<valeur, clé>, lorsque la clé n’existe pas, une variable est passée en clé et la valeur est modifiée. et crée une clé et une valeur, en retournant une valeur de valeur.

       2. Deuxième surcharge : GetOrAdd (TKEY, TValue)
Le premier paramètre est la clé, et le but du second paramètre est de créer une nouvelle valeur donnée par la clé lorsqu’elle n’existe pas. Retour de la valeur.
public TValue GetOrAdd(TKEY,Func<TKey, TValue>valueFactory)
TV publique Getor Add(TKEY, TValue)


Chaque opération d’AddOrUpdate et GetOrAdd est une méthode que ConcurrentDictionary utilise pour modifier/écrire dans le dictionnaire, ce qui garantit la sécurité des threads (cela se fait de manière sans verrouillage, en lisant les données du dictionnaire).




Précédent:Requête multiconditionnelle LINQ où la condition est construite
Prochain:Fenêtres sous les commandes d’opération de base Memcached
 Propriétaire| Publié sur 13/09/2016 13:33:25 |
ConcurrentDictionary vs. Dictionary+Locking - Dennis Gao
http://www.itsvse.com/thread-3106-1-1.html
(Source : Code Agriculture Network)
 Propriétaire| Publié sur 23/03/2021 11:32:18 |
Démenti:
Tous les logiciels, supports de programmation ou articles publiés par Code Farmer Network sont uniquement destinés à l’apprentissage et à la recherche ; Le contenu ci-dessus ne doit pas être utilisé à des fins commerciales ou illégales, sinon les utilisateurs assumeront toutes les conséquences. Les informations sur ce site proviennent d’Internet, et les litiges de droits d’auteur n’ont rien à voir avec ce site. Vous devez supprimer complètement le contenu ci-dessus de votre ordinateur dans les 24 heures suivant le téléchargement. Si vous aimez le programme, merci de soutenir un logiciel authentique, d’acheter l’immatriculation et d’obtenir de meilleurs services authentiques. En cas d’infraction, veuillez nous contacter par e-mail.

Mail To:help@itsvse.com