Эта статья является зеркальной статьёй машинного перевода, пожалуйста, нажмите здесь, чтобы перейти к оригиналу.

Вид: 19792|Ответ: 0

[Источник] Использование SyncRoot в StringDictionary

[Скопировать ссылку]
Опубликовано 23.11.2016 14:26:38 | | | |

Объектно-ориентированное программирование на C# предоставляет множество удобных для пользователя классов операций, теперь этот StringDictionary представляет собой собрание классов, специализирующихся на хранении строк как ключей и значений, значение этого класса такова: C# знает, что строка в типе значения довольно широко используется, другие типы значений также могут быть преобразованы в соответствующие типы строк, это и есть смысл этой коллекции, но вы всё равно можете использовать другие объекты коллекции для её замены, но обратите внимание на один момент, Если это строковое хранилище, это может уменьшить потерю памяти и сократить время работы программы


SyncRoot можно использовать для синхронизации доступа к StringDictionary

Говоря прямо, это концепция блокировки, давайте напишем программу для её тестирования:

Код таков:



У нас одновременно два потока для добавления данных в словарь StringDictionary,

Разница во времени выполнения между первым и вторым потоком составляет одну секунду, чтобы увеличить разницу во времени и предотвратить слишком быстрое выполнение.

Вы видите, что потоки перешли к двум методам, и при добавлении второго фрагмента данных они ждали добавления первых данных, прежде чем добавить второй, а время сложения очень быстрое.

Ниже мы напишем это по-другому, чтобы было проще понять:





Открываются 3 потока, добавляются данные, и 3 потока выполняются почти одновременно, но при добавлении данных каждый с интервалом 10 секунд.

В заключение, при многопоточном доступе мы можем использовать SyncRoot для обеспечения безопасности потоков




Предыдущий:Как использовать WPF Trigger для переключения кнопок
Следующий:c# Используйте OCR для распознавания китайских изображений
Отказ:
Всё программное обеспечение, программные материалы или статьи, публикуемые Code Farmer Network, предназначены исключительно для учебных и исследовательских целей; Вышеуказанный контент не должен использоваться в коммерческих или незаконных целях, иначе пользователи несут все последствия. Информация на этом сайте взята из Интернета, и споры по авторским правам не имеют отношения к этому сайту. Вы должны полностью удалить вышеуказанный контент с компьютера в течение 24 часов после загрузки. Если вам нравится программа, пожалуйста, поддержите подлинное программное обеспечение, купите регистрацию и получите лучшие подлинные услуги. Если есть нарушение, пожалуйста, свяжитесь с нами по электронной почте.

Mail To:help@itsvse.com