A C# objektumorientált programozás sok felhasználóbarát műveleti osztályt biztosít, most ez a StringDictionary egy olyan osztálygyűjtemény, amelyek a stringek kulcsként és értékként történő tárolására specializálódnak, ennek az osztálynak a jelentése: C# tudja, hogy az értéktípusban lévő string elég széles körben használatos, más értéktípusok is átalakíthatók megfelelő stringtípusokká, ez a gyűjtemény jelentése, de továbbra is használhatsz más gyűjteményobjektumokat helyettesíteni, de figyelj egy pontra, Ha string tárolásról van szó, ez csökkentheti a memóriaveszteséget és a program futtatásának idejét
A SyncRoot segítségével szinkronizálhatja a StringDictionary-hez való hozzáférést
Őszintén szólva, ez a zár fogalma, írjunk egy programot, hogy teszteljük:
A kódex a következő:
Két szál egyszerre van az adatok hozzáadására a StringDictionary szótárba,
Az első és a második szál közötti végrehajtási időbeli különbség egy másodperc, hogy növeljék az időkülönbséget és megakadályozzák a végrehajtás túl gyors működését.
Láthatod, hogy a szálak a két módszerhez mentek, és amikor hozzáadják a második adatdarabot, vártak az első adat hozzáadására, mielőtt a második adatot adják hozzá, és az összeadási idő nagyon gyors.
Az alábbiakban másképp írjuk meg, hogy könnyebben érthető legyen:
3 szálat nyitnak meg, az adatokat hozzáadják, és a három szálat szinte egyszerre hajtják végre, de az adatok hozzáadásakor mindegyik 10 másodperc különbséggel történik.
Összefoglalva, amikor többszálas hozzáférés van, a SyncRoot-ot használhatjuk a szálbiztonság biztosítására
|