C# objektorienterad programmering erbjuder många användarvänliga operationsklasser, denna StringDictionary är en samling klasser som specialiserar sig på att lagra strängar som nycklar och värden, betydelsen av denna klass är: C# vet att strängen i värdetypen är ganska allmänt använd, andra värdetyper kan också konverteras till motsvarande strängtyper, detta är betydelsen av denna samling, men du kan fortfarande använda andra samlingsobjekt för att ersätta den, men var uppmärksam på en punkt, Om det är stränglagring kan detta minska minnesförlusten och den tid det tar att köra programmet
SyncRoot kan användas för att synkronisera åtkomst till StringDictionary
För att uttrycka det rakt på sak, det är konceptet lås, låt oss skriva ett program för att testa det:
Koden är följande:
Vi har två trådar samtidigt för att lägga till data i StringDictionary-ordboken,
Skillnaden i exekveringstid mellan den första tråden och den andra tråden är en sekund, för att öka tidsskillnaden och förhindra att exekveringen blir för snabb.
Du kan se att trådarna har gått till de två metoderna, och när man lägger till den andra datan har de väntat på att den första datan ska läggas till innan den andra läggs till, och adderingstiden går väldigt snabbt.
Nedan kommer vi att skriva det på ett annat sätt för att göra det lättare att förstå:
3 trådar öppnas, och data läggs till, och de 3 trådarna exekveras nästan samtidigt, men när datan läggs till är varje tråd 10 sekunder ifrån varandra.
Sammanfattningsvis kan vi vid multitrådad åtkomst använda SyncRoot för att säkerställa trådsäkerheten
|