Должен ли весь словарь быть заблокирован от записи во время вызова TryGetValue ("abc")?
Да, потому что реализация словаря не является поточно-ориентированной.
Если можно гарантировать, что никакие ключи не будут добавлены / удалены во время вызова TryGetValue - нужно ли блокировать запись по-прежнему всему словарю?
Нет, этоне возможно и да, это все еще должно быть заблокировано от записи.Я не знаю, что означает «весь словарь» ... вам нужна эксклюзивная блокировка, которая не позволяет двум потокам выполнять код в одном словаре.Это связано с тем, что реализация словаря не является поточно-ориентированной.
При успешном вызове TryGetValue должен ли быть заблокирован весь словарь, пока изменяется соответствующее значение (SomeOtherClass)?Или только этот конкретный ключ, чтобы два человека не могли обновить один и тот же (SomeOtherClass) одновременно.
Если вы изменяете само значение (например, вызываете dictionary[key] = value
), тогда да, это должно бытьзаперта.Если значение является ссылочным типом, и вы не изменяете ссылку, а просто модифицируете объект, на который ссылается, словарь не нужно блокировать, поскольку вы не выполняете какой-либо код словаря, который не является поточно-ориентированным.