为了让共享的数组,集合能够被多线程更新,我们现在(.net4.0之后)可以使用并发集合来实现这个功能。而System.Collections和System.Collections.Generic命名空间中所提供的经典列表,集合和数组都不是线程安全的,如果要使用,还需要添加代码来同步。
先看一个例子,通过并行循环向一个List<string>集合添加元素。因为List不是线程安全的,所以必须对Add方法加锁来串行化。
任务开始:
private static int NUM_AES_KEYS =80000; static void Main(string[] args) { Console.WriteLine("任务开始..."); var sw = Stopwatch.StartNew(); for (int i = 0; i < 4; i++) { ParallelGennerateMD5Keys(); Console.WriteLine(_keyList.Count); } Console.WriteLine("结束时间:" + sw.Elapsed); Console.ReadKey(); }