问题标签 [task-parallel-library]
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.
c# - Java中任务并行库的等价物
我想在 Java 中没有等效的任务并行库(.NET 4.0)。真的吗?.NET 的这一特性提供了哪些 Java 并发没有的改进。
c# - 任务和线程有什么区别?
在 C# 4.0 中,我们Task
在System.Threading.Tasks命名空间中。Thread
和之间的真正区别是什么Task
。为了我自己的学习,我做了一些示例程序(来自 MSDN 的帮助)
但有很多疑问,因为这个想法不是很清楚。
我最初在 Stackoverflow 中搜索了类似类型的问题,但可能是这个问题标题我无法得到相同的问题。如果有人知道之前在这里发布的相同类型的问题,请提供链接的参考。
asp.net-4.0 - Parallel.Foreach 维护集合顺序?
使用时有没有办法保证顺序Parallel.ForEach()
?我循环的集合需要保持它的顺序,但我正在寻找一些性能改进。
c# - 用于目录遍历的任务并行库
我想遍历硬盘驱动器上的一个目录并在所有文件中搜索特定的搜索字符串。这听起来像是可以(或应该)并行完成的事情的完美候选者,因为 IO 相当慢。
传统上,我会编写一个递归函数来查找和处理当前目录中的所有文件,然后递归到该目录中的所有目录。我想知道如何将其修改为更加并行。起初我只是简单地修改:
到
但我觉得这可能会创建太多任务并使自己陷入困境,尤其是在尝试分派回 UI 线程时。我也觉得任务的数量是不可预测的,这可能不是并行化(这是一个词吗?)这个任务的有效方法。
有没有人成功地做过这样的事情?你有什么建议?
c++ - 在并发运行时,我可以将 parallel_invoke 或 task_group 与非常量函数对象一起使用吗?
我正在使用带有 Visual C++ 2010 的并发运行时,并且对parallel_invoke和task_group(PPL 或并行模式库的一部分)的功能感兴趣。我希望能够通过函数对象(而不是 lambda 函数或函数指针)启动两个并行操作,但由于错误,我无法编译代码:
但是,如果我将 C::operator()() 设为 const,那么我将失去函数对象的许多好处,即它的状态是可变的,并且在调用之间在内部保持不变。我在这里错过了什么吗?有没有办法可以并行调用非常量函数对象?
顺便说一句,我意识到我可以使用Asynchronous Agents Library,并从 Concurrency::agent 类派生类,但请考虑超出此问题的范围(部分原因是缺少异常处理和取消选项)。
我只是对我可以用 PPL 做什么感兴趣,虽然有 lambda 函数和函数指针的示例,但我找不到或创建任何具有函数对象的示例,这些函数对象不仅仅是并行的“Hello World”。我正在寻找真正利用函数对象的东西,如果可能的话,还有并发容器。
.net - 多个并行Task.ContinueWith执行顺序
问题
这可能是我错过的简单事情。
假设我这样做(在loveley VB中):
注意 t1.ContinueWith 被使用了两次。这些任务的首选执行顺序是什么?对我来说,要么是随机的,要么是错误的。
为什么?
我想这样做的原因...
- 创建任务抓取和返回数据
- 随后是“整理”上
TaskScheduler.FromCurrentSynchronizationContext()
(UI 线程)上的 UI 的任务 - 通过将数据转换为长报告来遵循原始数据抓取任务(需要很长时间)
- 返回 UI 线程,将该报表分配给预览控件
- 清理(摆脱我的进度动画等)
由于第 4 步是可选的,这一点变得更加复杂。
在这一切中,我的任务正在向后弯曲以设置成员属性,以便 UI 和任务可以很好地发挥作用。也许我应该完全放弃任务结果,只坚持同步我的成员变量。毕竟它们都只分配一次。
谢谢,汤姆
c# - 并行化注意事项
我想了解社区对此的看法。如果我有一个严重依赖 DB/IO 的进程,那么使用 Task Parallel 库并行化各个进程路径有多聪明?
我举个例子……如果我有一堆物品,我需要做以下操作
- 查询数据库以获取项目列表
- 执行一些聚合操作以根据动态参数列表对某些项目进行分组。
- 对于每个分组结果,根据聚合结果在数据库中查询某些内容。
- 对于每个分组的结果,做一些数值计算(3 和 4 将依次发生)。
- 对 #3 中计算的结果进行一些插入和更新
- 对 #1 中返回的每个项目进行一些插入和更新
从逻辑上讲,我可以在步骤#3、#5、#6 中并行化为任务图,因为其中一项与前一项的结果无关。但是,这些中的每一个都将在数据库(sql server)上等待,这很好,我知道我们只能处理 SQL server 允许的范围内。
但是我想在本地机器上逻辑地分配任务,以便它处理的速度与数据库允许我们一样快,而不必等待我们结束的任何事情。我做了一些模拟原型,我用 Thread.Sleeps 替换了 db 调用(我还尝试了 .SpinWait 的一些变体,它快了一百万倍),并且并行版本比当前的实现快得多,完全是串行的而且根本不平行。
我担心的是给 SQL 服务器带来太大的压力......在我走得太远之前,我应该考虑什么?
.net-4.0 - 如何在任务并行库中安排任务以供将来执行
有没有办法使用任务并行库来安排任务在未来执行?
我意识到我可以使用诸如 System.Threading.Timer 之类的 pre-.NET4 方法来做到这一点……但是,如果有 TPL 方法可以做到这一点,我宁愿留在框架的设计中。但是我找不到。
谢谢你。
php - 使用 Javascript 将多个 LI 拆分为 UL
我需要使用 javascript 将多个 LI 拆分为两个 UL。
我可以编辑的唯一代码是模板文件:
PHP 不能添加到这个文件中,所以我想用 JavaScript 解决这个问题:
我希望 Javascript 计算 UL 内的 LI,并用 LI 将 2 UL'd
结果应该是:
该网站使用原型。有人知道这个例子或我应该如何开始?提前致谢!!
c# - 异步等待任务超时完成
我想通过一些特殊规则等待Task<T>完成:如果 X 毫秒后仍未完成,我想向用户显示一条消息。如果 Y 毫秒后还没有完成,我想自动请求取消。
我可以使用Task.ContinueWith异步等待任务完成(即安排在任务完成时执行的操作),但这不允许指定超时。我可以使用Task.Wait同步等待任务超时完成,但这会阻塞我的线程。如何异步等待任务超时完成?