.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