使用并发集合(例如 ConcurrentDictionary)时,我应该使用 TryAdd 方法,还是只使用普通的旧索引分配?我的意思是,TryAdd 方法在添加时会阻塞,所以如果另一个线程试图删除该值,它必须等到添加完成?
问问题
128 次
2 回答
2
索引器的设置器和内部Add
调用TryAdd
。
public TValue this[TKey key]
{
get { /*Irrelevant*/ }
set
{
if ((object) key == null)
throw new ArgumentNullException("key");
TValue resultingValue;
this.TryAddInternal(key, value, true, true, out resultingValue);
}
}
Add
方法:
void IDictionary<TKey, TValue>.Add(TKey key, TValue value)
{
if (!this.TryAdd(key, value))
throw new ArgumentException(this.GetResource("ConcurrentDictionary_KeyAlreadyExisted"));
}
于 2013-01-13T14:20:38.293 回答
2
前缀try
与线程安全无关。它只是Add
.
于 2013-01-13T14:35:06.283 回答