- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
当我运行以下代码时:
public static double SumRootN(int root)
{
double result = 0;
for (int i = 1; i < 10000000; i++)
{
result += Math.Exp(Math.Log(i) / root);
}
return result;
}
static void Main()
{
ParallelOptions options = new ParallelOptions();
options.MaxDegreeOfParallelism = 2; // -1 is for unlimited. 1 is for sequential.
try
{
Parallel.For(
0,
9,
options,
(i) =>
{
var result = SumRootN(i);
Console.WriteLine("Thread={0}, root {0} : {1} ",Thread.CurrentThread.ManagedThreadId, i, result);
});
);
}
catch (AggregateException e)
{
Console.WriteLine("Parallel.For has thrown the following (unexpected) exception:\n{0}", e);
}
}
我看到输出是:
这里有3个thread Id,但是我已经指定了MaxDegreeOFParallelism只有2。那为什么是3个thread而不是2个呢?
最佳答案
默认情况下,For 和 ForEach 将利用底层调度程序提供的线程数,因此更改默认的 MaxDegreeOfParallelism 只会限制将使用的并发任务数。
翻译:在任何给定时刻只有 2 个线程在运行,但线程池中可能会使用更多(甚至更少)线程。您可以在任务开始时用另一个 writeline 对此进行测试,您会看到没有 3 个线程会同时进入。
关于c# - MaxDegreeOfParallelism = 2 显示 3 个线程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20733051/
我有一个任务列表,我想以有限的方式并行执行,几乎就像批处理一样,无需我管理。我的方法是使用 Parallel.ForEach 和 ParallelOptions 的 MaxDegreeOfParall
我试图了解调用 Parallel.For 时 MaxDegreeOfParallelism 实际上如何影响并行度。这是我正在试验的代码: static void Main(string[] arg
简单的问题。 对于任何给定的算法,您如何确定 MaxDegreeOfParallelism 的最优值是多少?需要考虑哪些因素以及需要权衡哪些因素? 最佳答案 我认为这取决于,如果您的所有任务都是“CP
我正在使用 Parallel.ForEach 并且我正在做一些数据库更新,现在没有设置 MaxDegreeOfParallelism ,双核处理器机器导致 sql 客户端超时,而四核处理器机器不知何故
考虑此代码在具有 32 个内核的 CPU 上运行: ParallelOptions po = new ParallelOptions(); po.MaxDegreeOfParallelism = 8;
我们在发送到 ActionBlock 时看到了意外行为,其中似乎正在发生并行处理,即使 MaxDegreeOfParallelism 为 1。情况如下。 发布到 ActionBlock 的类如下所示:
在 C# TPL 数据流库中,SingleProducerConstrained 是 ActionBlock 的优化选项,您可以在只有单个线程提供操作 block 时使用: If a block is
你好,我正在使用不同的 MaxDegreeOfParallelism 方法值进行“动态”多线程处理,但是每当我尝试更改大于 1 的 MaxDegreeOfParallelism 值时,它就会在控制台中
假设我有一个 Parallel.ForEach 在我的代码中运行,ParallelOption MaxDegreeOfParallelism 设置为 Utils.Threads( ) 像这样: Par
是否可以为 Array.Parallel 模块设置“MaxDegreeOfParallelism”(即要使用的最大线程数),因为在后台 it uses并行.For? 最佳答案 根据 this post
我正在使用 Parallel.Foreach 处理多个并发任务。我通过指定 MaxDegreeOfParalellism 来限制并发操作的数量。所以现在如果我在 foreach 之外开始另一个任务,最
当我运行以下代码时: public static double SumRootN(int root) { double result = 0; for
当我创建一个数据流 block 时,我指定它的 MaxDegreeOfParallelism 如下: ...New ExecutionDataflowBlockOptions With {.Ma
我正在我的函数中打开 n 个并发线程: List _files = new List(); public void Start() { CancellationTokenSource _tok
我们希望有选择地控制并行循环中“线程”的数量,以避免网络服务不堪重负(例如)。 是否可以在 Parallel.ForEach 循环中指定自定义 MaxDegreeOfParallelism,但也可以根
我想知道,当我运行 Parallel.For/ForEach 循环时,将使用多少个线程。 我发现,它可以通过 MaxDegreeOfParallelism 选项进行更改。 MSDN 上的 MaxDeg
通过 TPL 数据流,可以为块分配 MaxDegreeOfParallelism 以并行运行,另一种方法是通过限制每个目标块的 BoundedCapacity 将源连接到多个目标来“负载平衡”负载。
我不确定这个标题是否有意义,这是我能想到的最好的,所以这是我的场景。 我有一个 ASP.NET Core 应用程序,我更多地将其用作外壳并用于 DI 配置。在 Startup 中,它添加了一堆 IHo
我们每天有多达 30 GB 的 GZip 日志文件。每个文件包含 100.000 行,压缩后大小在 6 到 8 MB 之间。已剥离解析逻辑的简化代码利用了 Parallel.ForEach 循环。 在
我有以下程序(我从 http://blogs.msdn.com/b/csharpfaq/archive/2010/06/01/parallel-programming-in-net-framework
我是一名优秀的程序员,十分优秀!