【发布时间】:2013-03-31 01:46:41
【问题描述】:
我正在尝试在 C# 中增加列表中的元素,但我需要它是线程安全的,因此计数不会受到影响。
我知道你可以对整数这样做:
Interlocked.Increment(ref sdmpobjectlist1Count);
但这不适用于我目前拥有以下列表的列表:
lock (padlock)
{
DifferenceList[diff[d].PropertyName] = DifferenceList[diff[d].PropertyName] + 1;
}
我知道这行得通,但我不确定是否有其他方法可以做到这一点?
【问题讨论】:
-
如果这种方法行得通,为什么还需要另一种方法?
-
@CSharpie:
lock只是在幕后使用Monitor。 -
@user1765444:那么也许你需要一个 SpinLock。见albahari.com/threading/part5.aspx#_SpinLock_and_SpinWait
-
你可以使用
ConcurrentDictionary<TKey, TValue> -
您可以使用来自System.Collections.Concurrent Namespace 的集合之一。
标签: c# multithreading thread-safety increment