C# objektově orientované programování poskytuje mnoho uživatelsky přívětivých operačních tříd, tento StringDictionary je kolekce tříd specializujících se na ukládání řetězců jako klíčů a hodnot, význam této třídy je: C# ví, že řetězec v daném typu hodnoty je poměrně rozšířený, jiné typy hodnot lze také převést na odpovídající typy řetězců, to je význam této kolekce, ale stále můžete použít jiné objekty kolekce k jejich nahrazení, ale věnujte pozornost jednomu bodu, Pokud jde o úložiště řetězců, může to snížit ztrátu paměti a zkrátit dobu potřebnou k spuštění programu
SyncRoot lze použít k synchronizaci přístupu ke StringDictionary
Upřímně řečeno, je to koncept zámku, pojďme napsat program, který ho otestuje:
Kód je následující:
Máme dvě vlákna současně, která přidávají data do slovníku StringDictionary,
Rozdíl v době provedení mezi prvním a druhým vláknem je jedna sekunda, aby se časový rozdíl zvětšil a zabránilo se příliš rychlému vykonávání výkonu.
Vidíte, že vlákna přešla na obě metody a při přidávání druhého data čekají na přidání prvního data, než přidají druhá, a doba přidání je velmi rychlá.
Níže ji napíšeme jinak, aby byla snáze pochopitelná:
Otevřou se 3 vlákna, data se přičtou a všechna 3 vlákna se spustí téměř současně, ale po přidání dat jsou všechna od sebe vzdálena 10 sekund.
Shrnuto, při vícevláknovém přístupu můžeme použít SyncRoot k zajištění bezpečnosti vláken
|