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