这两个使用 IQueryable 和 .AsParallel 的代码片段是否等效?

2024-03-07

我正在编写一些非常基本的 TPL 代码,并且遇到了一种情况,我很好奇以下两个片段是否等效:

myEnumerable.AsParallel().Select(e =>
{
    //do some work that takes awhile
    return new Thing(e);
}

myEnumerable.Select(e =>
{
    //do some work that takes awhile
    return new Thing(e);
}.AsParallel()

另外 - 如果它们实际上是等价的,那么它们的等价性是否可以按照 TPL 接口与 IEnumerable 扩展方法的定义进行更改?或者我只是想在更新到 .NET V{Whatever} 时破坏我的代码?

对于背景,myEnumerable是一个我尚未枚举(进行数据库往返)的 EF 表(实体)。

我期望的行为是同步进行数据库调用,返回列表,并并行操作该列表(并行对列表进行一堆 Web 服务调用)


我很好奇以下两个片段是否等效

不,他们不是。你以前的代码将attempt来划分IEnumerable为了并行执行它。您后面的代码将把元素投影到您的Select依次接收过滤后的IEnumerable。只有在之后发生的事情AsParallel将并行运行。

请注意,LINQ-To-Entities 并不真正适用于AsParallel。通常,它会导致您的代码运行速度比顺序慢。还,DbContext不是线程安全的。该代码可能造成的弊大于利。

您可以做的是首先查询数据库,一旦数据进入内存,使用AsParallel.

我想要的行为是同步进行数据库调用,得到一个 列表回来,并并行操作列表(制作一堆网络 并行调用列表上的服务)

如果您想通过返回的数据进行多个 Web 服务调用,您可以利用现有的自然异步 API 来发出此类请求。例如,如果您正在查询 HTTP 端点,您可以利用HttpClient并结合使用它async-await,并同时执行查询,无需任何额外的线程。

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

这两个使用 IQueryable 和 .AsParallel 的代码片段是否等效? 的相关文章

  • strtok() 和空字段

    我正在将一些 C 结构序列化为字符串 然后将其反序列化strtok 但不幸的是 strtok 不检测空字段 例如 1 2 4 有没有替代功能 在linux上有strsep http www mkssoftware com docs man3
  • C++ 天花板函数的奇怪结果

    我一直在尝试天花板功能并得到一些奇怪的结果 如果我对十进制数乘以百执行 ceil 运算 我会得到一定的结果 但是 如果我直接对该乘法的结果执行 ceil 我会得到完全不同的输出 另一个问题是 这些不同的结果仅发生在某些数字上 任何帮助 将不
  • 委托和接口如何互换使用?

    我可以使用接口方法代替委托吗 如何 我发现搜索接口方法比使用委托更快 我希望有一个简单的代码片段 理论上 可以通过包含单个方法的接口 例如 Java 没有委托 来完成委托完成的所有工作 然而 它使代码变得更加冗长并且没有带来什么好处 话又说
  • lambda 表达式到函数指针的转换

    这是这个问题的后续问题 Lambda 如何作为参数传递 https stackoverflow com questions 3321283 c0x lambda how can i pass as a parameter 据推测 MSDN
  • 找不到 HttpContextBase 命名空间

    public string GetCartId HttpContextBase context if context Session CartSessionKey null if string IsNullOrWhiteSpace cont
  • 运行 C# exe 文件

    复制 为什么我的 NET 应用程序在从网络驱动器运行时会崩溃 https stackoverflow com questions 148879 why does my net application crash when run from
  • Visual Studio 2013 Intellisense 不会将枚举类型放在方法参数的位置

    例如 我有以下代码 namespace VS2013 EnumTypes class Program enum SomeEnum One Two static void SomeMethod SomeEnum someEnum some c
  • 如何在C中将2个4位无符号数组合成1个8位数

    我有 2 个 4 位数字 X0X1X2X3 和 Y0Y1Y2Y3 我想将它们组合起来 这样我就可以创建一个像这样的 8 位数字 X0X1X2X3 Y0Y1Y2Y3 gt X0Y0X1Y1X2Y2X3Y3 我知道如何连接它们以创建X0X1X1
  • Python 多处理:全局对象未正确复制到子级

    前几天我回答了一个关于SO的问题 https stackoverflow com q 67047533 1925388关于并行读取 tar 文件 这是问题的要点 import bz2 import tarfile from multipro
  • const_iterators 更快吗?

    我们的编码指南更喜欢const iterator 因为它们比正常的要快一点iterator 当您使用时 编译器似乎会优化代码const iterator 这真的正确吗 如果是的话 内部到底发生了什么使得const iterator快点 编辑
  • 如何设置cookie值?

    我正在执行以下操作来设置 cookie 值 HttpCookie mycookie new HttpCookie mycookie mycookie Value value1 Case sensitivity mycookie Expire
  • 访问结构向量

    我有一个结构 struct OutputStore int myINT string mySTRING 如果我创建一个 OutputStore 类型的数组 如下所示 OutputStore OutputFileData new Output
  • 如何在 .NET 中自定义 JSON 枚举的反序列化?

    我有以下示例 C 代码 它是使用 svcutil exe 应用程序从 xsd 自动生成的 DataContract public enum Foo EnumMember Value bar Bar 1 EnumMember Value ba
  • 为什么 C++ 元组如此奇怪?

    我通常创建自定义structs将不同类型的值分组在一起时 这通常很好 而且我个人发现命名成员访问更容易阅读 但我想创建一个更通用的 API 在其他语言中广泛使用元组后 我想返回类型的值std tuple但发现它们在 C 中使用比在其他语言中
  • 将 .NET 类库(主要定义 CRUD 操作)公开为服务

    公开现有内容的最佳 有效和最快的方法是什么 类 图书馆 主要定义 CRUD 操作 作为service 周转基金服务 or WCF数据服务 以便它可以与银光 or Ajax 在那儿tools 代码生成器 RAD 工具 哪些可以支持这个 预先感
  • 如何将这个基于代码的 WPF 工具提示转换为 Silverlight?

    以下工具提示代码适用于WPF 我正在努力让它发挥作用银光 但它给了我这些errors TextBlock does not contain a definition for ToolTip Cursors does not contain
  • Lambda 按值捕获和“mutable”关键字

    关键词的必要性mutable在 lambda 中 是造成极大混乱的根源 考虑代码 int x 10 function
  • 当前线程中的单例

    我的单身人士如下 public class CurrentSingleton private static CurrentSingleton uniqueInstance null private static object syncRoo
  • 我应该为每个 Web 请求使用静态缓存的 ResourceManager 还是一个新实例?有关系吗?

    创建新的 NET 对性能 或其他 有何影响 如果有 ResourceManager根据每个请求new ResourceManger myResourceType FullName myResourceType Assembly 与在 Des
  • InvalidOperationException:没有为方案“CookieSettings”注册身份验证处理程序

    我正在使用 ASP Net MVC core 2 1 开发一个应用程序 其中不断出现以下异常 InvalidOperationException 没有为方案 CookieSettings 注册身份验证处理程序 注册的方案有 Identity

随机推荐