parallel-extensions相关内容

Parallel.Foreach 产生太多线程

问题 尽管我将在这里讨论的代码是用 F# 编写的,但它基于 .NET 4 框架,并不特别依赖于 F# 的任何特殊性(至少看起来如此!). 我的磁盘上有一些数据,我应该从网络更新,将最新版本保存到磁盘: type MyData ={ 字段 1:整数;字段 2 : 浮动 }输入 MyDataGroup ={ 数据:MyData[];编号:整数 }//加载:int ->我的数据组让加载 d ..

Parallel.ForEach 不断产生新线程

当我在我的程序中使用 Parallel.ForEach 时,我发现有些线程似乎永远不会完成.事实上,它不断地产生新的线程,这是我没想到也绝对不想要的行为. 我能够使用以下代码重现此行为,就像我的“真实"程序一样,都大量使用处理器和内存(.NET 4.0 代码): 公共类节点{公共节点上一个{得到;私人订制;}公共节点(上一个节点){上一个 = 上一个;}}公开课计划{public stat ..

何时处置 CancellationTokenSource?

CancellationTokenSource 类是一次性的.快速查看 Reflector 可以证明 KernelEvent 的使用,这是一种(很可能)非托管资源.由于CancellationTokenSource没有finalizer,如果我们不处理它,GC就不会处理. 另一方面,如果您查看 MSDN 文章中列出的示例 托管线程中的取消,只有一个代码片段处理令牌. 在代码中处理它的正 ..
发布时间:2021-12-24 23:55:22 C#/.NET

列表线程安全

我正在使用以下代码 var processing = new List();Parallel.ForEach(items, item =>{处理.添加(SomeProcessingFunc(项目));}); 上面的代码线程安全吗?处理后的列表是否有可能损坏?或者我应该在添加之前使用锁? var processing = new List();Parallel.ForEach(items, i ..
发布时间:2021-12-06 14:14:47 C#/.NET

MaxDegreeOfParallelism 有什么作用?

我正在使用 Parallel.ForEach 并且我正在做一些数据库更新,现在没有设置 MaxDegreeOfParallelism ,双核处理器机器导致 sql 客户端超时,否则四核处理器机器不知何故不会超时. 现在我无法控制运行代码的地方可用的处理器内核类型,但是否可以使用 MaxDegreeOfParallelism 更改某些设置,以便同时运行更少的操作并且不会导致超时? 我可以 ..

在并行调用中,限制每秒执行次数

使用 TPL/Parallel.ForEach 是一种开箱即用的方法来限制每单位时间调用方法的次数(即每秒不超过 50 次调用).这与限制线程数不同.也许有一些简单的技巧可以使这项工作发挥作用? 解决方案 一种解决方案是制作以下 的线程安全版本https://stackoverflow.com/a/7728872/356790 ///////此类限制了在给定时间单位内可以发生的请求(方法 ..

任务并行库 - 您如何通过 TaskContinuationOptions.OnlyOnCanceled 获得继续触发?

我正在试验 .NET 4.0 中的任务支持 - 特别是延续支持.我感到困惑的是,我无法弄清楚如何在 TaskContinuationOptions.OnlyOnCanceled 标志设置为执行的情况下获得延续.如果我在我的工作例程中执行 ThrowIfCancellationRequested,它似乎只会作为错误而不是取消操作传播到延续之外.例如,给定以下代码: 使用系统;使用 System.T ..
发布时间:2021-09-04 19:36:20 其他开发

任务并行库 - 自定义任务调度程序

我需要将 Web 服务请求发送到在线 api,我认为 Parallel Extensions 非常适合我的需求. 有问题的网络服务旨在重复调用,但有一种机制,如果您每秒调用超过一定数量,则向您收费.我显然想尽量减少我的费用,所以想知道是否有人见过可以满足以下要求的 TaskScheduler: 限制每个时间跨度安排的任务数量.我想如果请求的数量超过了这个限制,那么它需要扔掉任务还是可能 ..
发布时间:2021-09-04 19:35:36 C#/.NET

反应式框架、PLINQ、TPL 和并行扩展如何相互关联?

至少自 .NET 4.0 发布以来,Microsoft 似乎在支持并行和异步编程方面付出了很多努力,并且似乎已经出现了很多围绕此的 API 和库.尤其是下面这些花哨的名字,最近时常被提及: 反应式框架, PLINQ(并行 LINQ), TPL(任务并行库)和 并行扩展. 现在它们似乎都是 Microsoft 产品,而且它们似乎都针对 .NET 的异步或并行编程场景.但目前尚不清楚 ..

可以将Parallel.ForEach与CloudTableQuery安全使用

我在Azure表中有相当数量的记录,试图对其进行一次数据加密.我以为可以使用Parallel.ForEach加快速度.另外,因为有超过1K的记录,而且我不想自己搞弄连续标记,所以我正在使用CloudTableQuery来获取我的枚举数. 我的问题是我的某些记录已被双重加密,并且我意识到我不确定CloudTableQuery.Execute()返回的枚举数在线程上的安全性如何.还有其他人对此组 ..
发布时间:2020-09-17 23:29:20 其他开发

在并行调用中,每秒限制执行

使用TPL / Parallel.ForEach提供了一种现成的方法来限制每单位时间调用一个方法的次数(即每秒不超过50个调用)。这与限制线程数不同。也许有一些简单的技巧可以使它起作用? 解决方案 一种解决方案是为以下创建线程安全版本href =“ https://stackoverflow.com/a/7728872/356790”> https://stackoverflow.com/ ..

单元测试并发软件 - 你做什么?

随着软件越来越多的并发,你如何处理测试类型的核​​心行为与你的单元测试(不是并行行为,只是核心行为)? 在过去的好日子里,你有一个类型,你调用它,你检查它返回的和/或其他调用的东西。 现在,你调用一个方法,实际工作被安排在下一个可用的线程上运行;你不知道它什么时候会真正开始和调用其他的东西 - 而且更多的是,这些其他的东西可能是并发的。 如何处理这个?你抽象/注入并行调度器(例如 ..

Parallel.ForEach保持生成新线程

当我在我的程序中使用Parallel.ForEach时,我发现有些线程似乎没有完成。事实上,它一直反复产生新的线程,一个我没有想到,绝对不想要的行为。 我能够重现这种行为下面的代码,就像我的真正的程序,都使用处理器和内存很多(.NET 4.0代码): public class Node { public Node上一页{get;私人集} public Node(Node ..

使用__gnu_parallel :: accumulate发生意外segfault

这真的让我很困惑,如果有人可以帮助我,我会感激。 (编辑:认为这是一个模板化的问题, 我要添加下面的类的多个副本与GNU的并行化累积算法(存储在的#include<并行/数字> ) 类别故意做不多,我不认为这是一个线程碰撞问题? 模板 class NaturalParameters { public: typedef typena ..
发布时间:2016-10-30 03:27:05 C/C++开发

PLINQ查询,需要知道执行了多少次迭代

我基本上做的是在一个字母组合序列上并行迭代,当我得到组合我想它被认为是一个胜利。我想从这个查询中获得所有的胜利(这是正确的),但诀窍是如何跟踪的胜利测试执行的次数(基本上返回true / false的方法,它赢了)。 我在类中创建一个实例变量,每次在组合测试执行时递增,但每次运行该进程时,此实例变量的编号。我发现这是一个线程问题,但我不知道如何解决它。 这个命中的最大数量的限制,停止。 ..
发布时间:2016-10-11 11:55:51 C#/.NET