Programarea orientată pe obiecte C# oferă multe clase de operații prietenoase cu utilizatorul, acest StringDictionary este o colecție de clase specializate în stocarea șirurilor de șir ca chei și valori, semnificația acestei clase este: C# știe că șirul din tipul de valoare este destul de larg folosit, alte tipuri de valori pot fi de asemenea convertite în tipuri corespunzătoare de șiruri, acesta este sensul acestei colecții, dar poți folosi în continuare alte obiecte de colecție pentru a o înlocui, dar acordă atenție unui punct, Dacă este stocare în șiruri, acest lucru poate reduce pierderea memoriei și timpul necesar pentru rularea programului
SyncRoot poate fi folosit pentru a sincroniza accesul la StringDictionary
Ca să fiu direct, este conceptul de blocare, hai să scriem un program pentru a-l testa:
Codul este următorul:
Avem două fire în același timp pentru a adăuga date în dicționarul StringDictionary,
Diferența de timp de execuție între primul fir și al doilea fir este de o secundă, pentru a lărgi diferența de timp și a preveni ca execuția să fie prea rapidă.
Poți vedea că firele de execuție au mers la cele două metode, iar când adaugă a doua bucată de date, au așteptat ca primele date să fie adăugate înainte de a adăuga a doua dată, iar timpul de adunare este foarte rapid.
Mai jos, o vom scrie într-un mod diferit pentru a o face mai ușor de înțeles:
Se deschid 3 fire, se adaugă datele, iar cele 3 fire sunt executate aproape simultan, dar când datele sunt adăugate, fiecare este la 10 secunde distanță.
În concluzie, când avem acces multithread, putem folosi SyncRoot pentru a asigura securitatea firelor
|