问题标签 [parallel.for]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c# - Parallel.For 与 BigInteger 计算输出不同于 For 循环
我有以下循环运行从 base95 到 base10 的转换。我正在处理几千位数字,因此需要 BigIntegers。inst
是 base95 字符串。
如果我使用大约 200 个字符或更少的 base95 字符串,它工作得非常好,并输出与正常for
循环相同的结果。
但是,一旦我开始增加 base95 字符串的大小,并行的输出就会被抛弃。我需要使用具有 1500 多个字符,甚至多达 30000 个字符的 base95 字符串。常规for
循环可以很好地计算结果。
什么可能导致这个问题?Parallel.For
有没有比循环更快的循环更好的方法for
?
nullreferenceexception - NullReferenceException epplus Parallel.For
下午好,我只想为我的英语道歉。我正在编写一个程序(使用 epplus 库),它需要一个 excel 文件并查找匹配项。当它找到替换一些单元格时。一切正常,但很长一段时间。我决定实现 Parallel.For,但是在条件下我得到一个错误 NullReferenceException
c# - 如何在 C# 的嵌套 for 中使用 Parallel.For
事实是我是并行的新手,但我想学习如何实现它,所以我想在下一个代码中运行 Parallel.For:
问题是我有一个巨大的 excel 文件,我需要将其复制到另一个文件中,而现在没有 Parallel.For 大约需要 20 分钟来迭代它。
所以我愿意接受建议。
谢谢。
c# - 在没有 Parallel.For() 的情况下在 c# 中的 for 循环中实现多线程
我对多线程比较陌生。我编写了一个 for 循环,用于打印从 0 到用户指定的 int 数的值。我现在想以这样的方式并行化它,使每个线程打印 5 个数字。当我使用它时它正在工作Parallel.For()。但我似乎无法手动完成。这是代码。
假设用户输入值为 21。然后它产生以下输出
然而,在 t[index].start() 之后使用 thread.join() 后,会产生以下输出。
我似乎无法理解发生了什么,也无法调试此代码,因为有许多线程同时运行。
提前致谢
c# - 使用 CancellationToken 使用方法取消 Parallel.For
使用函数时,我需要取消 Parallel.For 所做的所有任务。例如:
我需要停止当前正在运行的所有任务,而不是创建新任务。
有什么办法可以做到这一点?
我见过的所有例子都是用 lambda 制作的函数,所以我可以在那里访问 cts。我需要它在其他功能。另外,如果我将令牌作为参数传递,它也不起作用。cts 令牌已更改,但在其他线程中它没有更改。
任何帮助appriciated :)
编辑
正如我在评论中提到的,我更深入了,这个例子并不是我想要的。这些方法由 wpf 应用程序通过 msmq 发送的消息调用。我认为每次我从 wpf 调用时,服务都会创建此类的新实例,因此它会取消新实例而不是已经在计算的实例。有没有办法调用同一个实例?
c# - 增强并行操作 C#
我有 8 个逻辑处理器。执行以下代码时
我注意到 Parallel.For 制作了多批 8 个作业。每个批次将按顺序执行。这里的问题是,如果批处理中的 7/8 个作业完成,那么下一批将继续等待最后一个作业完成。这意味着 7 个核心不会很忙。有没有更好的实现并行性的方法是 C#,其中一旦批处理中的作业完成,它将为该核心分配另一个作业。
c# - Parallel.For 循环退出太快
我正在尝试将所有任务并行添加到列表中,然后等待它们。代码:
当我执行以下代码时,有时我会得到任务列表(tasks.Count)的大小为 493 或 500 或 498。但这不是确定性的。我应该怎么办?
c# - 如何将for循环修改为Parallel.For?C#
我创建了一个非常简单的应用程序来计算素数,然后编写它们。我想让它在所有内核上运行,如果用户选择计算例如1 000 000
......
如何将我已经运行的循环转换为在所有内核上运行?我发现有一个Parallel.For
,但我真的不知道如何从我现有的 for 循环转换为...
c# - 如何将进度条添加到此并行代码中
如何在下面显示的第三个循环中添加进度条?
实验证据表明,在以下三个循环中,第三个是最快的。最佳性能是线程数与 CPU 的逻辑处理器相同时。我认为这是由于减少了分配和释放线程资源所花费的时间。
这是生成噪声图的代码。有时处理时间足够长以至于需要进度条。
将更新速率限制为每秒几次的进度条是最好的。
添加 IProgress 我已经到了这里,这几乎可以工作。问题是在 parallel.for 完全完成后进度条会更新。
在研究了太久之后,它现在看起来像这样。
进度部分从每个线程递增到总共 100 次。它在更新进度条时仍有一些延迟,但似乎是不可避免的。例如,如果进度条在绘制 100 次更新的时间内增加了 100 倍,则进度似乎排队并在方法返回后继续进行。在调用该方法后将进度显示抑制一秒钟就足够了。只有当方法花费的时间太长以至于您想知道是否正在发生任何事情时,进度条才真正有用。
vb.net - 将 For 循环转换为 Parallel.For 用于数据比较不起作用
我正在通过从独立读取器读取指纹并将它们与数据库中的模板进行比较来创建指纹验证应用程序。读取器带有内置 SDK,以便于验证指纹是否匹配。
使用普通的 Loop 语句,无论是 For Each 还是 For Next,甚至是 Queue & Dequeue(当然,这不是一个 Loop),都没有获取捕获指纹的正确所有者的问题。一切都很好。
但是当我试图将进程转换为 Parallel.For 时,似乎无法“找到”捕获模板的正确所有者,或者根本无法进行匹配过程。
Normal Loop 能找到 Dbuserid,而 Parallel.For 找不到 Dbuserid。不确定是不是语法错误。欢迎大家指出。提前致谢!