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();
}
@" 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的原理;-)