使用嵌套 Parallel.For

2024-03-06

考虑这个例子:

var x = 0;

for (var i = 0; i < 100; i++ )
{
    for (var a = i+1; a < 100; a++)
        x += 1;
}

当打印 x 我们always得到 4950。如果我想并行化这个怎么办?

这就是我想出的

Parallel.For(0, 100, i => Parallel.For(i + 1, 100, a => { x += 1; }));

However每次我运行它时,它不会打印 4950 。为什么?


并行扩展可帮助您以近乎命令式的语法创建、分配、运行和会合任务。什么doesn't要做的就是照顾各种线程安全(其中之一pitfalls http://msdn.microsoft.com/en-us/library/dd997403.aspx?ppud=4)。您正在尝试使并行线程同时更新单个共享变量。要正确地执行类似的操作,您必须引入例如锁定。

我不确定你想做什么。我假设您的代码只是一个占位符或实验。仅当您可以隔离不同的工作时,并行化才适用;不是当你经常需要与共享数据会合时。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用嵌套 Parallel.For 的相关文章

  • 静态只读字符串数组

    我在我的 Web 应用程序中使用静态只读字符串数组 基本上数组有错误代码 我将所有类似的错误代码保存在一个数组中并检查该数组 而不是检查不同常量字符串中的每个错误代码 like public static readonly string m
  • 当我在组合框中选择一个项目时,如何防止 TextChanged 事件?

    我有一个TextChanged http msdn microsoft com en us library system windows forms control textchanged aspx我的事件ComboBox http msd
  • CLR 2.0 与 4.0 性能比较?

    如果在 CLR 4 0 下运行 为 CLR 2 0 编译的 NET 程序会运行得更快吗 应用程序配置
  • 适合初学者的良好调试器教程[关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 有谁知道一个好的初学者教程 在 C 中使用调试器 我感觉自己好像错过了很多 我知道怎么做 单步执行代码并查看局部变量 虽然这常常给我带来问
  • C++ 是否可以在 MacOS 上与 OpenMP 和 boost 兼容?

    我现在已经尝试了很多事情并得出了一些结论 也许 我监督了一些事情 但似乎我无法完成我想要的事情 问题是 是否有可能使用 OpenMP 和 boost 在 MacOS High Sierra 上编译 C 一些发现 如果我错了请纠正我 Open
  • 如何判断计算机是否已重新启动?

    我曾经使用过一个命令行 SMTP 邮件程序 作为试用版的限制 它允许您在每个 Windows 会话中最多接收 10 封电子邮件 如果您重新启动计算机 您可能还会收到 10 个以上 我认为这种共享软件破坏非常巧妙 我想在我的应用程序中复制它
  • 函数参数的默认参数是否被视为该参数的初始值设定项?

    假设我有这样的函数声明 static const int R 0 static const int I 0 void f const int r R void g int i I 根据 dcl fct default 1 如果在参数声明中指
  • 当一组凭据下的计划任务启动的进程在另一组凭据下运行另一个程序时,Windows 是否有限制

    所以我有一个简单的例子 其中我有应用程序 A 它对用户 X 本地管理员 有一些硬编码的凭据 然后它使用硬编码的绝对路径启动带有这些凭据的应用程序 B A 和 B 以及 dotnet 控制台应用程序 但是它们不与控制台交互 只是将信息写入文件
  • 从客户端访问 DomainService 中的自定义对象

    我正在使用域服务从 Silverlight 客户端的数据库中获取数据 在DomainService1 cs中 我添加了以下内容 EnableClientAccess public class Product public int produ
  • File.AppendText 尝试写入错误的位置

    我有一个 C 控制台应用程序 它作为 Windows 任务计划程序中的计划任务运行 此控制台应用程序写入日志文件 该日志文件在调试模式下运行时会创建并写入应用程序文件夹本身内的文件 但是 当它在任务计划程序中运行时 它会抛出一个错误 指出访
  • 为什么可以通过ref参数修改readonly字段?

    考虑 class Foo private readonly string value public Foo Bar ref value private void Bar ref string value value hello world
  • 识别 Visual Studio 中的重载运算符 (c++)

    有没有办法使用 Visual Studio 快速直观地识别 C 中的重载运算符 在我看来 C 中的一大问题是不知道您正在使用的运算符是否已重载 Visual Studio 或某些第三方工具中是否有某些功能可以自动突出显示重载运算符或对重载运
  • 在视口中查找 WPF 控件

    Updated 这可能是一个简单或复杂的问题 但在 wpf 中 我有一个列表框 我用一个填充数据模板从列表中 有没有办法找出特定的数据模板项位于视口中 即我已滚动到其位置并且可以查看 目前我连接到了 listbox ScrollChange
  • 在 NaN 情况下 to_string() 可以返回什么

    我使用 VS 2012 遇到了非常令人恼火的行为 有时我的浮点数是 NaN auto dbgHelp std to string myFloat dbgHelp最终包含5008角色 你不能发明这个东西 其中大部分为0 最终结果是 0 INF
  • C++ 中的双精度型数字

    尽管内部表示有 17 位 但 IEE754 64 位 浮点应该正确表示 15 位有效数字 有没有办法强制第 16 位和第 17 位为零 Ref http msdn microsoft com en us library system dou
  • 检测到严重错误 c0000374 - C++ dll 将已分配内存的指针返回到 C#

    我有一个 c dll 它为我的主 c 应用程序提供一些功能 在这里 我尝试读取一个文件 将其加载到内存 然后返回一些信息 例如加载数据的指针和内存块的计数到 c Dll 成功将文件读取到内存 但在返回主应用程序时 程序由于堆损坏而崩溃 检测
  • 使 Guid 属性成为线程安全的

    我的一个类有一个 Guid 类型的属性 该属性可以由多个线程同时读写 我的印象是对 Guid 的读取和写入不是原子的 因此我应该锁定它们 我选择这样做 public Guid TestKey get lock testKeyLock ret
  • 使用 C 在 OS X 中获取其他进程的 argv

    我想获得其他进程的argv 例如ps 我使用的是在 Intel 或 PowerPC 上运行的 Mac OS X 10 4 11 首先 我阅读了 ps 和 man kvm 的代码 然后编写了一些 C 代码 include
  • 我可以在“字节数”设置为零的情况下调用 memcpy() 和 memmove() 吗?

    当我实际上没有什么可以移动 复制的时候 我是否需要处理这些情况memmove memcpy 作为边缘情况 int numberOfBytes if numberOfBytes 0 memmove dest source numberOfBy
  • 不区分大小写的字符串比较 C++ [重复]

    这个问题在这里已经有答案了 我知道有一些方法可以进行忽略大小写的比较 其中涉及遍历字符串或一个good one https stackoverflow com questions 11635 case insensitive string

随机推荐

  • 为什么这是一个最终递归可变参数宏?

    以下构造在 VisualStudio 2013 中进行编译 我刚刚创建了一个新的 consoleApplication 项目 并且仅更改了主 cpp 因此您只需粘贴它并尝试一下即可 它显然所做的是创建一个最终递归可变参数宏 include
  • Python 代码:几何布朗运动 - 出了什么问题?

    我对 Python 还很陌生 但是对于大学论文 我需要应用一些模型 最好使用 Python 我花了几天时间处理我附加的代码 但我真的帮不上忙 出了什么问题 它没有创建一个看起来像带有漂移的标准布朗运动的随机过程 我的参数 如 mu 和 si
  • Windows 通用项目不支持 VS2017 页面

    从昨天开始我遇到了一个相当不愉快的问题 我清除了 NuGet 缓存 因为我无法让 NuGet 包与我的代码之一一起使用 但这没有帮助 反而搞砸了我之前编写的 UWP 应用程序 我的代码中的每个元素都会出现错误 如下所示 在 XAML 中 主
  • PostgreSQL中如何实现嵌套INSERT语句?

    我有两张桌子 group and groupmembers 在插入行时group表 我还想插入两个值 groupid 来自组表的 ID 和userid 创建该组的用户的 ID 到groupmembers桌子 这些是表格 CREATE TAB
  • 如何将根(裸)域重定向到 www - heroku 和 zerigo

    我有一个域 example com 和 www example com 我正在使用 Heroku 和 Zerigo 作为 DNS 现在我有一个从我的 Hostgator 帐户从根域到 www example com 的转发 但这不起作用 我
  • python 的 swig 类型映射:输入和输出数组

    我想在 Python 中使用一个 C 函数 extern int convertAtoB stateStruct myStruct const double PointA 3 double PointB 3 使用 SWIG 我想我需要定义一
  • Web API 2 和 .NET 4.5.1 迁移后 GlobalConfiguration.Configure() 不存在

    我最近开始关注本指南 http www asp net mvc tutorials mvc 5 how to upgrade an aspnet mvc 4 and web api project to aspnet mvc 5 and w
  • Flutter - BloC Cubit 函数不发出状态

    我正在创建一个 Flutter 应用程序 我在项目中添加了一个 BloC 以管理状态 我创建了一个包含数据的列表 我想使用 添加 按钮手动将项目添加到 ListView 我写了一段代码 我的物品 肘节 class ItemCubit ext
  • 如何在 Alembic 迁移中使用现有的 sqlalchemy 枚举 (Postgres)

    在过去的某个时候 我运行了一次 alembic 迁移 它创建了一个users桌子像 def upgrade op create table users sa Column id sa Integer autoincrement True n
  • Eclipse RCP 和 tycho - 无法解析 org.eclipse.swt.widgets.Button 类型。它是从所需的 .class 文件间接引用的

    情况 我有一个 Eclipse RCP 应用程序 我正在尝试使用 Eclipse 的 tycho 插件构建它 当我在 IDe 内执行 Eclipse 应用程序时 应用程序正常执行 当使用 tycho 构建应用程序时 抛出以下错误 The t
  • Linq2Sql 检索数据点

    我目前正在开发一个使用 linq2sql 作为数据库访问框架的项目 现在有很多 linq 查询 它们基本上执行以下操作 var result from
  • R tm包:utf-8文本

    我想为 utf 8 中的非英语文本创建一个词云 实际上 它是哈萨克语 文本在 tm 包的检查功能中显示得绝对正确 但是 当我搜索词频时 所有内容都显示不正确 问题在于文本显示为编码字符而不是单词 西里尔字符显示正确 结果 词云变得一团糟 是
  • 使用 Simplepie 时出现弃用错误

    我已经安装了最新的 Simplepie 代码 1 2 1 并且我正在使用他们提供的演示代码
  • 有没有办法在另一种形式上显示一种形式的一部分?

    我有一个表格 我想做的就是在另一个表单上显示该表单的一部分 我不希望它发挥作用或任何东西 我基本上只是希望它是一张图片 这可能吗 如果可能的话 如何实现 Like display new display form new rectangle
  • 具有动态形状的变量 TensorFlow

    我需要在 TensorFlow 中创建一个矩阵来存储一些值 诀窍是矩阵必须支持动态形状 我正在尝试做与 numpy 中相同的事情 myVar tf Variable tf zeros x y validate shape False whe
  • python 中的“in”和“not in”语句如何工作

    我主要学习 C 语言 并花了很多时间了解其底层实现 但我最近开始学习Python 所以这里有很多与C不同的怪癖 python 中的 in 语句如何工作 if x in array the usage of an in statement p
  • 在 C 编程中将用户输入写入文件

    我正在开发一个程序 将用户输入写入文件 然后搜索文件中的特定记录并将其输出到屏幕 我尝试使用 fgets 和 fputs 但没有成功 这是我到目前为止所拥有的 include
  • codeIgniter 分页 - 不会转到搜索结果的下一个链接

    我正在对搜索结果使用分页 搜索工作完美 搜索后显示前 10 条记录 但是 当我单击 下一步 按钮时 所有内容都会消失并显示一个空白页面 任何我的代码中可能有问题的想法将不胜感激 Model function search bookings
  • ZedGraph (.NET) - 仅具有实际值的轴标签

    使用ZedGraph http zedgraph org控制 假设我正在绘制 Y 值为 13 34 和 55 的数据 如何设置 Y 轴 以便仅显示 13 34 和 55 的文本标签 我猜网格线将同步 我不希望在数据范围内有规则间隔的标签 例
  • 使用嵌套 Parallel.For

    考虑这个例子 var x 0 for var i 0 i lt 100 i for var a i 1 a lt 100 a x 1 当打印 x 我们always得到 4950 如果我想并行化这个怎么办 这就是我想出的 Parallel F