.Net List类不是线程安全的。我希望实现所需的最小锁定,但仍然满足这样的要求,即对于阅读,幻像记录是允许的,并且对于书写,它们必须是线程安全的,因此不会有任何丢失的更新。.NET List线程安全实现需要提出的建议
所以我有类似
public static List<string> list = new List<string>();
In Methods that have **List.Add**/**List.Remove** , I always lock to assure thread safety
lock (lockHelper)
{
list.Add(obj);
or list.Remove(obj);
}
In Methods that requires **List Reading** I don't care about phantom record so I go ahead to read without any locking. In this case. Return a bool by checking whether a string had been added.
if (list.Count() != 0) {
return list.Contains("some string")
}
我所做的只是锁定写访问,并允许访问读取要经过没有任何锁定。我的线程安全主意是否有效?
我明白有列表大小扩展。它会好吗?我的猜测是,当一个List正在扩展时,它可能会使用一个temp。名单。这是可以的,因为临时列表大小将总是有一个边界,并且.Net类很好地实现,即。在更新中发现读取时,不应该有任何indexOutOfBound或循环引用问题。
您使用哪个.NET版本的线程安全集合? – msarchet
microsoft .net v4.0 – Bamboo