Как осуществляется доступ к ConcurrentDictionary и как его сериализовать? - PullRequest
6 голосов
/ 22 сентября 2011

Я никогда раньше не использовал объект ConcurrentDictionary и у меня есть пара вопросов по этому поводу:

  1. Правильно ли я понимаю, что несколько словарей могут читать из словаря одновременно, но еслион записывается, никакой другой поток не может получить к нему доступ?

  2. Может ли этот объект быть сериализован на диск?

Спасибо.

Ответы [ 2 ]

13 голосов
/ 22 сентября 2011

Правильно ли, что несколько потоков могут читать из словаря одновременно, но если он записывается, никакой другой поток не может получить к нему доступ?

Нет, вы можете безопасночитать и писать из нескольких потоков.Конечно, внутренне я предполагаю, что происходит некоторая синхронизация, но снижение производительности должно быть небольшим, и вы не должны беспокоиться об этом и делать дополнительную синхронизацию.

Может ли этот объект быть сериализован на диск?

Зависит от того, какой сериализатор вы используете.

3 голосов
/ 22 сентября 2011
  1. Правильно ли, что несколько потоков могут читать из словаря одновременно, но если он записывается, никакой другой поток не может получить к нему доступ?

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

Может ли этот объект быть сериализован на диск?

Да, он помечен [Serializable].И вы всегда можете извлечь пары <K,V> и использовать любой понравившийся вам сериализатор.

...