问题标签 [parallel-extensions]
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.
.net - .Net 4 并行扩展的好学习资料
任何人都可以向我推荐一些关于新并行扩展及其在 .Net 4 中的使用的很好的学习材料,除了 MSDN 之外,这样我就可以学习 -
- .Net 4 上的并行编程
- 非并行和并行编程范式之间的基本区别
- 如何创建支持并行计算的数据结构?
最好有任何免费的可下载材料。
.net - 这个并行化代码的效率如何?有更好的方法吗?
我正在构建一个大型 Lucene 索引,并且我插入的每个文档都需要在插入之前进行一些“组合”。我正在从数据库中读取所有文档并将它们插入到索引中。Lucene 允许您构建一些不同的索引并在以后将它们合并在一起,所以我想出了这个:
我唯一让我犹豫的是,每次迭代从池中拉出一个 IndexWriter(然后在最后放回)可能比仅仅创建最佳线程数开始效率低,但我也知道ConcurrentBag 非常高效,处理开销极低。
我的解决方案好吗?或者它是否在寻求更好的解决方案?
更新:
经过一些测试,从数据库加载比我认为的实际索引要慢一些。此外,最终的索引合并也很慢,因为我只能使用一个线程,并且我将 16 个索引与大约 170 万个文档合并。不过,我对最初的问题持开放态度。
.net - 慢并行。用于中断
Stop()
我在一个更大的循环中有以下代码,在分析我的代码后,我发现所有 Parallel.For 执行速度的增益在方法完成的很长时间内都会丢失。有什么办法可以改善这一点吗?也许打电话Thread.Sleep()
?
谢谢。
parallel-extensions - Parallel.ForEach 能否与 CloudTableQuery 一起安全使用
我正在尝试对其进行一次性数据加密的 Azure 表中有合理数量的记录。我认为我可以通过使用Parallel.ForEach
. 另外,因为有超过 1K 条记录,而且我不想自己弄乱延续令牌,所以我正在使用 CloudTableQuery 来获取我的枚举器。
我的问题是我的一些记录已被双重加密,我意识到我不确定返回的枚举CloudTableQuery.Execute()
器的线程安全性如何。有没有其他人有过这种组合的经验?
.net - 使用 .Net 并行扩展 (Parallel.Invoke) 进行多个异步调用?
目前,我有一段代码需要对各种数据提供者进行大约 7 次 Web 服务调用。每个调用都需要几秒钟的时间来执行,所以我想并行运行它们以加快速度。
我已经将我的 7 个调用封装在一个 Parallel.Invoke 中,它非常适合同时运行几件事情,但是在一个 2 核服务器上,它一次只能执行 2 个,每个内核一个。由于我所做的只是等待 Web 服务调用返回,因此我希望它获取所有 7 个并等待它们返回。
有没有办法做到这一点?或者也许我的方法是错误的?也许我需要创建对 Web 服务的异步调用?但是,如何等他们都回来再继续前进呢?
wcf - 对 EF4 实体的并发访问(并行 + EF4)
我目前在调度服务中工作,该服务使用 EF4 和 WCF 处理通过不同渠道(电子邮件、私人消息、应用程序消息)传递的数千条消息。
为了加快消息发送速度,我尝试使用 Parallels:
我的 Dispatch 方法使用反射来匹配通道配置方法并同时处理每条消息,但是当我将 SaveChanges() 设置为全局实体时,尝试更新线程内的 EF 对象时遇到了很大问题(它在 application_start 上初始化)
问题有多种形式:
- 空对象引用
- 列表项 属性是对象的关键信息的一部分,不能修改。
- 基础提供程序在打开时失败。
- 不允许新事务,因为会话中还有其他线程在运行。(如果关闭则强制连接打开后)
问题是 EF4 是否是线程安全的来实现这个场景?我拥有全局实体的方法是最好的解决方案,还是应该按任务进行 EF4 初始化?
欢迎任何帮助,我已经失去了 2 个小时试图找出可能的解决方法。
c# - c# 并行化模拟
我有一个模拟引擎,我想先并行化,然后在 C# 中开发为 Web 服务。这是一个密集的模拟,需要大量的 CPU 和 RAM,我想将每个运行拆分在一个单独的线程上。为了让您更好地了解模拟可以运行 100 次运行,每次运行我都会收集一些结果。收集每次运行的结果然后将它们整理到一个大文件中是很简单的。因此,如果我有一台具有 4 个内核的多核机器,例如,想法是在每个内核上运行 4 次,然后再运行 4 次……等等。我在较新版本的 .net 中阅读了一些关于并行扩展的内容。我可以在 3.5 中实现相同的目标,还是迁移到 4.0 会更好?如果我将其设为 Web 服务,还有什么要注意的吗?任何进一步的想法或建议都非常受欢迎。
.net - 来自大规模并行线程读取的 Azure 表存储性能
短版:我们能否以多线程的方式从数十个或数百个表分区中读取,从而将性能提高几个数量级?
长版:我们正在开发一个在 Azure 表存储中存储数百万行的系统。我们将数据分成小分区,每个分区包含大约 500 条记录,代表一个单元一天的数据。
由于 Azure 没有“求和”功能,要提取一年的数据,我们要么必须使用一些预缓存,要么自己在 Azure Web 或辅助角色中对数据进行求和。
假设如下: - 读取一个分区不会影响另一个分区的性能 - 读取一个分区存在基于网络速度和服务器检索的瓶颈
然后我们可以猜测,如果我们想快速汇总大量数据(1 年,365 个分区),我们可以使用大规模并行算法,它几乎可以完美地扩展到线程数。例如,我们可以使用具有 50 多个线程的 .NET 并行扩展并获得巨大的性能提升。
我们正在做一些实验,但我想看看以前是否做过。由于 .NET 端基本上是空闲等待高延迟操作,这对于多线程来说似乎是完美的。
task-parallel-library - 任务并行库 - 如何通过 TaskContinuationOptions.OnlyOnCanceled 获得继续触发?
我正在试验 .NET 4.0 中的任务支持——特别是继续支持。我感到困惑的是,我无法弄清楚如何让TaskContinuationOptions.OnlyOnCanceled
标志设置为继续执行。如果我ThrowIfCancellationRequested
在我的工作例程中执行 a ,它似乎只会作为错误而不是取消操作传播出延续。例如,给定以下代码:
这输出:
如何退出我的工人(总和)方法以使OnlyOnCanceled
延续被解雇?
.net - Parallel.For() 循环中的进度更新
你可以猜到 Parallel.For() 循环的索引从一个值跳转到另一个值。我如何估计完成的工作量?
谢谢。