问题标签 [plinq]

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.

0 投票
3 回答
1087 浏览

c# - 删除 Interlocked.Add in Parallel.For?

我有一些代码可以使用parallel.for进行一些查找并计算出现次数:

这个版本比顺序计算快得多。但我想找到一个不同的解决方案来计算发生次数,因为 Interocked.Add 是一个瓶颈。我正在调查 Plinq 是否是一种选择,但到目前为止还没有找到一种方法来计算数组中 nextPos1 元素的出现次数。

0 投票
6 回答
8312 浏览

c# - 订购 PLINQ ForAll

关于PLINQ 中订单保存的 msdn 文档说明了以下关于ForAll().

  • 源序列排序时的结果:非确定性并行执行
  • 源序列无序时的结果:非确定性并行执行

这是否意味着ForAll永远无法保证方法的有序执行?

我以前没有使用过 PLINQ,但是下面的Code Review 问题似乎是它的合适用法。在我的答案的底部,我写道:

阅读文档后,我相信AsOrdered()不会改变任何东西?
我还怀疑前面的查询不能替换for顺序很重要的简单循环?可能还会发生
对 的并行调用,导致输出错误?StringBuilder

0 投票
3 回答
584 浏览

c# - Plinq 语句在静态构造函数中死锁

我遇到了这种情况,静态构造函数中的以下 plinq 语句陷入僵局:

仅当构造函数是静态的时才会发生。有人可以向我解释一下吗。

是 TPL 错误吗?编译器?我?

0 投票
2 回答
4162 浏览

c# - 请解释一下 AsParallel()

有人可以向我解释一件事。据我了解 AsParallel() 在自己的任务中执行。那么,如果查询返回大量数据,则在“foreach”开始执行 Console.WriteLine 时变量“d”可能为空?

0 投票
2 回答
1296 浏览

postgresql - Postgres 和 Npgsql 的并行性或 PLINQ

我有一个超过 12,000,000 行的 Posrgres 9.04 数据库表。

我需要一个程序来读取每一行,进行一些计算和查找(针对第二个表),然后在第三个表中写入一个带有这些计算结果的新行。完成后,第三张表的行数将与第一张表相同。

在 Core i7 720QM 处理器上串行执行需要超过 24 小时。它只对我的 8 个内核中的一个(4 个物理内核,但 8 个通过 HTT 对 Windows 7 可见)征税。

我想通过并行性来加快速度。我以为我可以使用 PLINQ 和 Npgsql:

但是,我收到一个错误records.AsParallel()找不到源类型“System.Linq.ParallelQuery”的查询模式的实现。未找到“选择”。考虑明确指定范围变量“行”的类型。

我已经做了很多谷歌搜索,我只是变得更加困惑。NpgsqlDataReader继承自System.Data.Common.DbDataReader,后者又实现了IEnumerable,它具有AsParallel扩展名,所以似乎有合适的东西来让它工作?

我不清楚我什至可以做什么来明确指定范围变量的类型。似乎最好的做法是指定这一点。

我愿意切换到 DataSet,假设它与 PLINQ 兼容,但如果可能的话,我宁愿避免,因为有 12,000,000 行。

这甚至可以通过 Npgsql 实现吗?我需要改用 Devart 的 dotConnect for PostgreSQL 吗?

更新:刚刚找到http://social.msdn.microsoft.com/Forums/en-US/parallelextensions/thread/2f5ce226-c500-4899-a923-99285ace42ae,这让我尝试了这个:

到目前为止,IDE 中没有错误,但这是构建它的正确方法吗?

0 投票
3 回答
2549 浏览

.net - 并行 Foreach 内存问题

我在 FileInfoCollection 中有一个文件集合(3000 个文件)。我想通过应用一些独立的逻辑(可以并行执行)来处理所有文件。

但是在处理了大约 700 个文件后,我遇到了内存不足的错误。我之前使用过线程池,但它给出了同样的错误。如果我尝试在没有线程(并行处理)的情况下执行,它工作正常。

在“ProcessWorkerItem”中,我正在运行基于文件字符串数据的算法。此外,我使用 log4net 进行日志记录,并且在这种方法中与 SQL 服务器有很多通信。

以下是一些信息,文件大小:1-2 KB XML 文件。我阅读了这些文件,该过程取决于文件的内容。它正在识别字符串中的一些关键字并生成另一种 XML 格式。关键字在 SQL 服务器数据库中(近 2000 个字)。

0 投票
0 回答
924 浏览

c# - 用于数据表的 PLINQ

是否可以将 Plinq 应用于下一个代码:

非常感谢任何改进的进步。

0 投票
1 回答
441 浏览

c# - 为什么 Plinq 不支持超过 63 个并行线程?

我认为这个问题很清楚。PLinq 不允许您创建超过 63 个线程(WithDegreeOfParallelism 不允许,抛出 ArgumentOutOfRangeException)。在极少数情况下,我们需要从线程池中获取超过 63 个线程(例如 I/O 操作,其中一个任务需要比平时更多的时间才能完成)。据我所知, Parallel 类也有同样的限制。有什么解决方法吗?这种限制的原因是什么?

0 投票
2 回答
586 浏览

c# - 测试中的 WatiN 并行化

我有一个测试,我想确保一页内的单独操作会产生不同的结果。具体来说,我有几种方法可以在页面上进行排序,并且我想要进行测试以确保每种排序都不同。我还有其他测试来确保每种类型的正确性。

我希望这次对话的重点是并行运行测试操作并在最后比较结果的好方法,而不是测试什么或测试方法。我认为测试中的并行操作是一个有趣且足够广泛的主题,它可能对其他人有用。

让“generateHashFromSearchResults()”是一个函数,它返回一个字符串,表示当前 IE 实例上显示的搜索结果的顺序。以下是使用一个浏览器实例以序列化方式运行的代码:

几个月前我读过 PLINQ 并认为这可能是一个不错的用例。现在让“generateHashFromSearchResults(IE ie)”成为同一个函数,但它在明​​确定义的 IE 实例上运行。我试过这样的事情:

我现在面临的最大问题是不了解 PLINQ 如何进行线程管理。WatiN 需要在单元状态设置为单线程 (STAThread) 的情况下运行。我知道每个 IE 实例都应该在它自己的线程中,但是将 PLINQ 查询中的每个线程设置为正确的单元状态并不能解决问题。

我开始怀疑我需要了解更多关于 PLINQ 的信息才能继续,或者我需要手动学习更多关于线程管理的信息才能让它工作。

有什么想法吗?

0 投票
2 回答
4439 浏览

c# - 如何从我的主线程中杀死由 Parallel.ForEach 生成的所有线程?

这是场景:

我有一个正在运行的 Windows 服务。OnStart()它设置了一个将调用函数的计时器(我们称之为ProcessEvent())。里面的代码ProcessEvent是临界区,所以只有一个线程可以做以下事情:

ProcessItem可能需要很长时间。

现在,当服务停止时,我OnStop()目前只是停止并处理计时器。但是我注意到,即使服务停止后,仍有线程仍在运行ProcessItem()

那么我怎样才能杀死该程序产生的所有正在运行的线程(主要是由 产生的线程,Parallel.ForEach但也包括任何等待锁定的线程ProcessEvent)?

我知道如果我自己创建了线程,我可以设置isBackground为 true 并且当进程终止时它都会被杀死,但我不会手动创建这些线程。