題目有點(diǎn)意思,大家都知道Dictionary<K,V>不是線程安全的類型,而List<T>是線程安全的嗎?在今天之前大叔沒有去測試過,而就在今天也是一個(gè)VIP問我,說在我的代碼中使用了并行,然后為一個(gè)List賦值,說的直接一點(diǎn)就是:List元素是全局的,在各個(gè)線程里分別去操作它,測試數(shù)據(jù)是1萬條,而在測試結(jié)果之后,我發(fā)展List元素最終的數(shù)組是9000多條,也就是說被并發(fā)了幾千條數(shù)據(jù),呵呵,下面咱們看一下源代碼吧!
測試代碼:
[TestMethod] public void TestMethod0() { List<int> intList = new List<int>(); var result = Parallel.ForEach(Enumerable.Range(1, 10000), (val) => { intList.Add(val); }); if (result.IsCompleted) { Console.WriteLine("intList.Count():" + intList.Count); } }
延伸閱讀
學(xué)習(xí)是年輕人改變自己的最好方式