C# обектно-ориентираното програмиране предоставя много удобни за потребителя класове за операции, този StringDictionary е колекция от класове, специализирани в съхраняването на низове като ключове и стойности, значението на този клас е: C# знае, че низът в типа стойност е доста широко използван, други типове стойности също могат да се конвертират в съответните типове низове, това е значението на тази колекция, но все пак можете да използвате други колекция обекти за нейно замяне, но обърнете внимание на една точка, Ако е съхранение на низове, това може да намали загубата на памет и да намали времето за изпълнение на програмата
SyncRoot може да се използва за синхронизиране на достъпа до StringDictionary
Накратко, това е концепцията за заключване, нека напишем програма, която да я тества:
Кодът е следният:
Имаме две нишки едновременно, за да добавяме данни към речника на StringDictionary,
Разликата във времето за изпълнение между първата и втората нишка е една секунда, за да се увеличи разликата във времето и да се предотврати прекалено бързо изпълнение.
Виждате, че нишките са преминали към двата метода и при добавяне на втория елемент данни, те са чакали първото да бъде добавено преди добавянето на вторите, а времето за събиране е много бързо.
По-долу ще го напишем по различен начин, за да е по-лесно за разбиране:
Отварят се 3 нишки, данните се добавят, като трите нишки се изпълняват почти едновременно, но когато данните се добавят, всяка е на 10 секунди разстояние.
В обобщение, при многонишков достъп можем да използваме SyncRoot, за да гарантираме сигурност на нишките
|