任务并行库如何在终端服务器或 Web 应用程序中扩展?

2023-12-30

据我所知,当我执行 Parallel.For 和类似构造之类的东西时,TPL 使用工作窃取队列来执行其任务。

如果我理解正确的话,该构造将启动许多任务,每个任务将开始处理项目。如果其中一个任务完成了分配给他们的物品,它将开始从其他尚未完成的任务中窃取物品。这解决了以下问题:项目 1-100 的处理成本较低,而项目 101-200 的处理成本较高,并且两个任务之一将处于闲置状态,直到另一个任务完成。 (我知道这是一个简化的解释。)

但是,这将如何在终端服务器或 Web 应用程序中扩展(假设我们在将在 Web 应用程序中运行的代码中使用 TPL)?我们是否可以仅仅因为有 N 个并行运行的应用程序实例而冒使 CPU 充满任务的风险?

我应该阅读有关该主题的任何信息吗?我还没有发现任何特别的东西,但这并不意味着没有。


您也许能够使用 TPL 通过迁移到异步模型来改进 I/O 绑定操作。您还可以通过在低负载情况下更多地利用 Web 服务器上可用的未使用处理器容量来改善请求延迟。您需要仔细考虑这一点,因为在高负载下,处理器已经 100% 使用,增加更多并行性将降低服务器的吞吐量。

并行扩展团队博客对此进行了讨论:

在 ASP.NET 应用程序中使用 .NET 4 的并行扩展 http://blogs.msdn.com/pfxteam/archive/2010/02/08/9960003.aspx

我怀疑同样的论点也适用于终端服务器应用程序。

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

任务并行库如何在终端服务器或 Web 应用程序中扩展? 的相关文章

随机推荐

  • 获取生成器的子集

    我有一个生成器函数 想从中获取前十项 我的第一次尝试是 my generator 10 正如错误告诉我的那样 这不起作用 因为生成器不可订阅 现在我已经解决了这个问题 list my generator 10 这是有效的 因为它将生成器转换
  • AWS ALB + Django + Gunicorn +- Nginx?

    我正在 AWS 中构建一个环境来托管 django 应用程序 我试图弄清楚是否应该使用 nginx 作为构建的一部分 我在下面列出了一些不同的环境 以供示例 比较之用 所有环境都使用 AWS ALB ENV 1 ALB gt dockerc
  • nptl SIGCONT 和线程调度

    我正在尝试移植依赖于 SIGCONT 的代码来停止应用程序的某些线程 对于当前的 linux nptl 实现 似乎不能依赖 2 6 x 内核中的实现 我正在尝试设计一种方法来停止其他线程 目前我只能考虑互斥体和条件变量 任何提示表示赞赏 如
  • PHP 中JavaScript 的decodeURIComponent 的等价物是什么?

    我有一个包含 unicode 字符的字符串 我正在通过 HTTP 传输该字符串 该字符串是用 Javascript 编码的encodeURIcomponent php 中是否有与 Javascript 等效的函数decodeURICompo
  • Google Play 说我使用 Android Studio Build->Generate Signed APK 构建的 APK 是可调试的

    我收到消息 您上传了可调试的 APK 出于安全原因 您需要先禁用调试 然后才能在 Google Play 中发布 了解有关可调试 APK 的更多信息 我使用 Android Studio 生成 APK 构建 gt 生成签名 APK 我创建了
  • Tmux:失去焦点时自动隐藏面板

    我最近开始使用 tmux 进行 Vim 编辑 在 PyCharm 中 我曾经在底部有一个终端 我可以通过几次按键来切换屏幕 我希望 tmux 具有相同的功能 在 Vim 中全屏编辑代码 然后当我需要运行命令时 直接转到屏幕底部的终端窗格 然
  • 我的服务器可以同时运行多少个 php 脚本?

    我有一个最终用户可以访问的脚本 该脚本可以进行以下调用 exec php orderWatcher php insertedId gt dev null 在 orderWatcher php 中我做了一些需要很长时间的操作 if check
  • 如何通过命令行向sql脚本传递参数

    有一个要求 我试图自动化项目中的一个流程 其中需要运行 sql 来进行日常报告 sql 如下所示 这是最简单的形式 但我的 sql 有 400 行 下面只是获取结果的示例 test sql select from table where c
  • .query 字符串中的美元符号 ('$') 是什么意思?

    什么是 该声明中的符号含义 SQL Query gt Update Data client query UPDATE items SET text 1 complete 2 WHERE id 3 data text data complet
  • 按索引选择多索引数据框中的行而不丢失任何级别

    我想选择一个名为 Mid 的行 而不丢失它的索引 Site 以下代码显示了数据框 m commodity price max maxperstep Site Commodity Type Mid Biomass Stock 6 0 inf
  • spring数据休息更新产生交叉连接sql错误

    我想使用 Spring Data Rest 来更新某些用户的行 但在运行时此查询在查询中添加了奇怪的 交叉联接 Spring数据休息方法 Modifying Transactional Query Update Notification n
  • 如何使用python的telnetlib从设备获取固定时间段的数据?

    我正在通过 telnet 连接到硬件设备 该设备的 I O 非常简单 因此 我向它提交一个命令 然后设备每秒一次一次输出一行数据 每行仅包含一个数字 所以我的问题是这样的 如果我使用python的telnetlib连接到这个设备 我如何获取
  • 防止双重投票

    我正在创建一个 Web 应用程序 用户将通过单击 赞成 或 反对 来为某些候选人投票 并且这些用户在该网站上没有任何帐户 最好使用什么技术 是否有必要使用验证码来进一步防范垃圾邮件 预计投票数将达到数百万 主题也不是很关键 只要我得到 95
  • 基本的 javascript 流程 - 在各种浏览器中

    我试图通过一个非常简单的 JavaScript 示例来学习 JavaScript 中的流程 但是三种浏览器 Chrome IE 和 Firefox 这三种浏览器都显示不同的流程模式和不同的最终结果 我知道会出现跨浏览器问题 但这个问题非常简
  • 将 bsxfun 与匿名函数一起使用

    在尝试理解 bsxfun 函数之后 我尝试在脚本中实现它以避免循环 我试图检查数组中的每个单独元素是否包含在一个矩阵中 返回一个与分别包含 1 和 0 的初始数组大小相同的矩阵 我创建的匿名函数是 myfunction x y sum an
  • 在 jQuery 对话框中时,asp.net 表单控件不可读,如何修复它?

    我有一个带刺的 我有一个 ASP NET Web 表单页面 在页面中 我有一个 div 标签 我已将其设置为用作 jQuery 对话框 div 中是一些 jQuery 控件 我打开对话框并单击其中一个按钮开始回发 当页面回发时 隐藏代码尚未
  • 局部变量以下划线开头是个好习惯吗?

    我刚刚接触 Ruby 并且来自 Java 和 C C 环境 在用 Ruby 编写第一个小项目时 我不知何故习惯了让所有局部变量都以下划线开头 我想我这样做的主要动机是更好的可读性以及与方法调用的区别 原则上只有三种类型的变量 global
  • PushViewController 是否保留控制器?

    我正在努力找出 PushViewController 是否保留控制器 目前我有以下代码 有效 ColorController colorController ColorController alloc initWithNibName nib
  • 内部类扩展

    在java中 假设我有以下类 public class A protected class B 我可以通过执行以下操作来扩展内部类吗 public class C extends A protected class D extends B
  • 任务并行库如何在终端服务器或 Web 应用程序中扩展?

    据我所知 当我执行 Parallel For 和类似构造之类的东西时 TPL 使用工作窃取队列来执行其任务 如果我理解正确的话 该构造将启动许多任务 每个任务将开始处理项目 如果其中一个任务完成了分配给他们的物品 它将开始从其他尚未完成的任