C# objektorientert programmering tilbyr mange brukervennlige operasjonsklasser, nå er denne StringDictionary en samling klasser som spesialiserer seg på å lagre strenger som nøkler og verdier, meningen med denne klassen er: C# vet at strengen i verditypen er ganske mye brukt, andre verdityper kan også konverteres til tilsvarende strengtyper, dette er meningen med denne samlingen, men du kan fortsatt bruke andre samlingsobjekter for å erstatte den, men vær oppmerksom på ett punkt, Hvis det er strenglagring, kan dette redusere minnetapet og tiden det tar å kjøre programmet
SyncRoot kan brukes til å synkronisere tilgang til StringDictionary
For å si det rett ut, det er konseptet lock, la oss skrive et program for å teste det:
Koden er som følger:
Vi har to tråder samtidig for å legge til data i StringDictionary-ordboken,
Tidsforskjellen mellom den første og den andre tråden er ett sekund, for å øke tidsforskjellen og forhindre at utførelsen blir for rask.
Du kan se at trådene har gått til de to metodene, og når de legger til det andre datastykket, har de ventet på at de første dataene skal legges til før de legger til de andre, og addisjonstiden går veldig raskt.
Nedenfor skal vi skrive det på en annen måte for å gjøre det lettere å forstå:
3 tråder åpnes, og dataene legges til, og de 3 trådene utføres nesten samtidig, men når dataene legges til, er hver tråd 10 sekunder fra hverandre.
Oppsummert, ved multitrådet tilgang kan vi bruke SyncRoot for å sikre trådsikkerhet
|