La programmation orientée objet C# offre de nombreuses classes d’opérations conviviales, ce StringDictionary est une collection de classes spécialisées dans le stockage de chaînes comme clés et valeurs, la signification de cette classe est la suivante : C# sait que la chaîne dans le type de valeur est assez largement utilisée, d’autres types de valeurs peuvent aussi être convertis en types de chaînes correspondants, c’est le sens de cette collection, mais vous pouvez toujours utiliser d’autres objets de collection pour la remplacer, mais faites attention à un point, Si c’est un stockage en chaînes, cela peut réduire la perte de mémoire et le temps nécessaire pour exécuter le programme
SyncRoot peut être utilisé pour synchroniser l’accès au StringDictionary
Pour être franc, c’est le concept de verrou, écrivons un programme pour le tester :
Le code est le suivant :
Nous avons deux threads simultanément pour ajouter des données au dictionnaire StringDictionary,
La différence de temps d’exécution entre le premier et le second fil est d’une seconde, afin d’élargir la différence de temps et d’éviter que l’exécution ne soit trop rapide.
Vous pouvez voir que les threads sont passés aux deux méthodes, et lors de l’ajout de la deuxième donnée, ils attendent que les premières données soient ajoutées avant d’ajouter les secondes, et le temps d’addition est très rapide.
Ci-dessous, nous l’écrirons d’une manière différente pour la rendre plus facile à comprendre :
3 threads sont ouverts, les données ajoutées, et les 3 threads sont exécutés presque en même temps, mais lorsque les données sont ajoutées, chacun est espacé de 10 secondes.
En résumé, lors d’un accès multithread, nous pouvons utiliser SyncRoot pour garantir la sécurité des threads
|