试了一下.Net Fx 4.0中的Parallel

        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.Mana
gedThreadId.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的原理;-)

 

posted on 2009-11-15 12:27  J.D Huang  阅读(652)  评论(0编辑  收藏  举报