Я изучаю (рассматривая возможность написания собственного словабельного словаря) Я нашел следующую реализацию.Словарь ThreadSafe ... Ключевые значения Перечисляемые пары? (.net)
http://devplanet.com/blogs/brianr/archive/2008/09/26/thread-safe-dictionary-in-net.aspx
Это выглядит довольно хорошо в целом, но есть одна вещь, которая меня смущает.
Невозможно перечислить словарь потоков. Вместо перечисления ключей или значений коллекции
, который находится в обоих
public virtual IEnumerator<KeyValuePair<TKey, TValue>> GetEnumerator()
{
throw new NotSupportedException("Cannot enumerate a threadsafe dictionary. Instead, enumerate the keys or values collection");
}
IEnumerator IEnumerable.GetEnumerator()
{
throw new NotSupportedException("Cannot enumerate a threadsafe dictionary. Instead, enumerate the keys or values collection");
}
То, что я не получаю, почему это хорошо, чтобы перечислить ключи и значения, но не КВП-ые годы словаря?
Может ли кто-то пролить свет на это для меня? Заранее спасибо.
Не могли бы вы также скопировать внутренний список? – Svish
ahh, избили меня, –
Настоящий трюк - это то, что вы все еще не могли использовать перечислитель, поскольку он является сдержанным. Если 2 потока попытались перечислить в одно и то же время, где бы вы сохранили скопированный список? –