[英]How can I determine programmatically whether on multi-core, hyperthreading or multi-processor?
[英]Using Multi-core (-thread) processor for FOR loop
我有一个简单的循环:
for (int i = 1; i <= 8; i++)
{
DoSomething(i);
}
int nopt = 8; //number of processor threads
我想在处理器线程1中做DoSomething(1)
,
线程2中的DoSomething(2)
...
线程8中的DoSomething(8)
。
可能吗? 如果是的话怎么样?
谢谢你的回答。
你可以试试Parallel.For
:
int nopt = 8;
ParallelOptions po = new ParallelOptions() {
MaxDegreeOfParallelism = nopt,
};
// 9 is exclusive when you want i <= 8
Parallel.For(1, 9, po, i => DoSomething(i));
PLinq (Parallel Linq)是另一种选择:
Enumerable
.Range(1, 8)
.AsParallel()
.WithDegreeOfParallelism(nopt)
.ForAll(i => DoSomething(i));
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.