C# objektno usmerjeno programiranje ponuja veliko uporabniku prijaznih operacijskih razredov, zdaj je ta StringDictionary zbirka razredov, specializiranih za shranjevanje nizov kot ključev in vrednosti, pomen tega razreda je: C# ve, da je niz v tem tipu vrednosti precej razširjen, druge vrste vrednosti je mogoče prav tako pretvoriti v ustrezne vrste nizov, to je pomen te zbirke, vendar lahko še vedno uporabite druge objekte zbirke za zamenjavo, vendar bodite pozorni na eno točko, Če gre za shranjevanje nizov, lahko to zmanjša izgubo pomnilnika in skrajša čas, potreben za zagon programa
SyncRoot se lahko uporablja za sinhronizacijo dostopa do StringDictionary
Če povem naravnost, gre za koncept zaklepanja, napišimo program, ki ga bo preizkusil:
Koda je naslednja:
Imamo dve niti hkrati, da dodajamo podatke v slovar StringDictionary,
Razlika v času izvajanja med prvo in drugo nitjo je ena sekunda, da se časovna razlika poveča in prepreči prehitro izvajanje.
Vidite lahko, da so niti prešle na obe metodi, in ko dodajate drugi podatek, čakajo, da se prvi podatki dodajo, preden dodajo drugega, čas dodajanja pa je zelo hiter.
Spodaj ga bomo napisali na drugačen način, da bo lažje razumljiv:
Odprejo se 3 niti, podatki se seštejejo, in vse tri niti se izvedejo skoraj istočasno, vendar je ob dodajanju podatkov vsaka 10 sekund narazen.
Povzemimo, da lahko pri večnitnem dostopu uporabimo SyncRoot za zagotavljanje varnosti niti
|