.net 使用C中的任务并行库为每个处理器运行一个并行任务#
使用任务并行库时,是否可以确保每个处理器一次只运行一个任务?如果没有,在C#中实现这一点的最佳方法是什么 注意:我这样做不是为了提高性能,而是为了使每个任务的时间安排更加可靠。有关更多信息,请参见此问题:您可以使用指定最大并行度。然而,这是一个上限,它不会强制每个核心一个线程,其他约束可能意味着使用更少的核心 e、 g.net 使用C中的任务并行库为每个处理器运行一个并行任务#,.net,multithreading,c#-4.0,parallel-processing,task-parallel-library,.net,Multithreading,C# 4.0,Parallel Processing,Task Parallel Library,使用任务并行库时,是否可以确保每个处理器一次只运行一个任务?如果没有,在C#中实现这一点的最佳方法是什么 注意:我这样做不是为了提高性能,而是为了使每个任务的时间安排更加可靠。有关更多信息,请参见此问题:您可以使用指定最大并行度。然而,这是一个上限,它不会强制每个核心一个线程,其他约束可能意味着使用更少的核心 e、 g var list=newlist(); var options=新的ParallelOptions(); options.MaxDegreeOfParallelism=4; Pa
var list=newlist();
var options=新的ParallelOptions();
options.MaxDegreeOfParallelism=4;
Parallel.ForEach(列表、选项);
您可以使用指定最大并行度。然而,这是一个上限,它不会强制每个核心一个线程,其他约束可能意味着使用更少的核心
e、 g
var list=newlist();
var options=新的ParallelOptions();
options.MaxDegreeOfParallelism=4;
Parallel.ForEach(列表、选项);
首先,如果您想获得绝对可靠的计时,那么使用Windows和.Net不是正确的选择。Windows,因为它不是一个应用程序,它可以根据系统中发生的其他事情为您的代码选择不同的时间。Net不是一个好的选择,因为垃圾收集器使它具有不确定性的定时
但是如果你只是想让时间变得更可靠,你可以做一些事情
如果您想在自己的处理器上运行每个线程,可以手动创建线程
s,然后为每个线程设置,但是
如果您只想确保所有任务立即启动(无论线程池
上当前正在运行哪些其他任务),您也应该创建自己的线程
但是,如果您只想确保每个处理器最多有一个任务,只需设置为。首先,如果您想获得绝对可靠的计时,那么使用Windows和.Net不是正确的选择。Windows,因为它不是一个应用程序,它可以根据系统中发生的其他事情为您的代码选择不同的时间。Net不是一个好的选择,因为垃圾收集器使它具有不确定性的定时 但是如果你只是想让时间变得更可靠,你可以做一些事情 如果您想在自己的处理器上运行每个线程,可以手动创建
线程
s,然后为每个线程设置,但是
如果您只想确保所有任务立即启动(无论线程池
上当前正在运行哪些其他任务),您也应该创建自己的线程
但如果您只想确保每个处理器最多有一个任务,只需设置为
var list = new List<int>();
var options = new ParallelOptions();
options.MaxDegreeOfParallelism = 4;
Parallel.ForEach(list, options);