static string [] arr = Directory.GetFiles( @" C:\Users\Public\Pictures\Sample Pictures " , " *.jpg " ); // 这里Spin的数值最好自行modify一下,我的是Q6600的机子 static void SimulateProcessing() { Thread.SpinWait(1000000000); } static string TID { get { return " TID = " + Thread.CurrentThread.ManagedThreadId.ToString(); } } static void Main( string [] args) { //foreach (string name in arr) //{ // Program.SimulateProcessing(); // Console.WriteLine(name + TID); //} Parallel.ForEach(arr, (string name) => { Program.SimulateProcessing(); Console.WriteLine(name + TID); }); Console.ReadLine(); }
采用并行的Foreach效果的确很明显.不仅仅是指派了多个线程,对cpu的利用率也高很多,
见下面两图比较:原来的foraech:使用parallel的foreach:有兴趣的朋友可以对parallel相应的类库做一下逆向工程分析一下it的原理;-)