<!--<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();
}
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的原理;-)
本文介绍了一个使用C#进行并行处理的例子,通过对比传统的foreach循环与并行foreach循环,展示了并行处理如何提高CPU利用率及程序执行效率。
1万+

被折叠的 条评论
为什么被折叠?



