В контексте этого заявления,Разъяснение чтения и записи на C# Словарь
Словарь может поддерживать несколько читателей одновременно, до тех пор как коллекция не изменяется. Несмотря на это, перечисление через коллекцию по существу не является производственной цепью . В редком случае случай, когда перечисление ссылается на с обращением на запись, сбор должен быть заблокирован во время всего перечисления . Чтобы позволить коллекции получить доступ к нескольким потокам для чтения и записи , вы должны реализовать собственную синхронизацию.
Что означает чтение и запись? Я понимаю, что чтение - это операция, которая ищет ключ и дает ссылку на его значение, а запись - операция, которая добавляет или удаляет пару значений ключа из словаря. Однако я не могу найти ничего убедительного в этом отношении.
Так что большой вопрос заключается в том, что при внедрении словабельного словаря операция, которая обновляет значение для существующего ключа в словаре, должна рассматриваться как читатель или писатель? Я планирую иметь несколько потоков, обращаясь к уникальным клавишам в словаре и изменяя их значения, но потоки не будут добавлять/удалять новые ключи.
Очевидная импликация, предполагая, что изменение существующего значения не является операцией записи в словаре, заключается в том, что моя реализация потокового безопасного словаря может быть намного более эффективной, поскольку мне не нужно было бы каждый раз получать эксклюзивную блокировку Я пытаюсь обновить значение до существующего ключа.
Использование ConcurrentDictionary от .Net 4.0 не является вариантом.
Это действительно комментарий, а не ответ на вопрос. Пожалуйста, используйте «добавить комментарий», чтобы оставить отзыв для автора. – SliverNinja
@SliverNinja, мне кажется, что в этом ответе рассматривается основной вопрос: «Будет ли операция, которая обновляет значение для существующего ключа в словаре, должна рассматриваться как читатель или писатель?». – binki