0
public class Foo
{
public int Count { get; set; }
}
public class FooHandler
{
private ConcurrentDictionary<string, Foo> FooHash = new ConcurrentDictionary<string, Foo>();
public IncrementFoo(string key)
{
FooHash[key].Count++;
}
}
我可以用这种方式更新Foo条目的属性吗?它是否是线程安全的(即在此场景中获取或设置索引器原子)?是否在ConcurrentDictionary线程安全中通过索引更新值的属性?
ConcurrentDirectory是线程安全的,不会让你的Foo类的线程安全。事实并非如此,增加一个变量是不安全的。您至少需要使用Interlocked.Increment()来增加属性的后备存储,或锁定。 –
@HansPassant您不能在属性上使用“互锁”。 – Servy