Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/multithreading/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
.net 使用C中的任务并行库为每个处理器运行一个并行任务#_.net_Multithreading_C# 4.0_Parallel Processing_Task Parallel Library - Fatal编程技术网

.net 使用C中的任务并行库为每个处理器运行一个并行任务#

.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

使用任务并行库时,是否可以确保每个处理器一次只运行一个任务?如果没有,在C#中实现这一点的最佳方法是什么

注意:我这样做不是为了提高性能,而是为了使每个任务的时间安排更加可靠。有关更多信息,请参见此问题:

您可以使用指定最大并行度。然而,这是一个上限,它不会强制每个核心一个线程,其他约束可能意味着使用更少的核心

e、 g

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);