试了一下.Net Fx 4.0中的Parallel

<!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--> static string []arr = Directory.GetFiles(
@" C:\Users\Public\Pictures\SamplePictures " ,
" *.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(stringnameinarr)
//{
//Program.SimulateProcessing();
//Console.WriteLine(name+TID);
//}

Parallel.ForEach(arr,(
stringname)=>
{
Program.SimulateProcessing();
Console.WriteLine(name
+TID);
}
);
Console.ReadLine();
}

采用并行的Foreach效果的确很明显.不仅仅是指派了多个线程,对cpu的利用率也高很多,
见下面两图比较:
原来的foraech:

使用parallel的foreach:


有兴趣的朋友可以对parallel相应的类库做一下逆向工程分析一下it的原理;-)

你可能感兴趣的:(thread,C++,c,.net,C#)