问题标签 [gpars]

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.

0 投票
1 回答
491 浏览

groovy - 如何让 IntelliJ IDEA 识别 GPars DSL?

根据GPars 用户指南,一旦将 GPars jar 添加到项目中,IntelliJ IDEA 应该能够立即识别 GPars DSL。从 Groovy 1.8 开始,GPars 现在包含在 Groovy 发行版中,但是将这个方面添加到 IDEA 项目似乎没有帮助。

有谁知道我如何激活 DSL 支持?如果能识别 DSL 关键字而不是到处都有小下划线,那就太好了。

注意:我使用的是 IntelliJ IDEA Ultimate v11.1

0 投票
2 回答
281 浏览

groovy - Actors主体中“loop()”方法的意义是什么 - GPars

在 Actors 主体中,我们需要在 loop() 方法中编写 react() 方法。我想知道这个循环方法与“for”或“while”循环有何不同?

GPars 文档说“loop() 与嵌套的 react() 块合作,并将确保在后续消息检索中循环。” 我不完全理解这一点。根据我的理解,无论我们为循环方法提供什么闭包,都会一次又一次地执行无数次。那么与嵌套的 react() 块协调有什么意义呢?

0 投票
1 回答
91 浏览

arrays - GPars 处理庞大的列表,对其部分进行修复大小并行化

我正在寻找 GPars 功能,它允许在并行子任务集中的顺序执行部分中分离大任务。

即迭代K的数组大小,执行并行任务块的顺序分配,每个块的大小为 threadCount

换句话说,不要在第一次迭代数组并一次提交所有任务,而是在前一个块准备好时使用即分页顺序进行分配(防止OOM)。

类似于下面的代码,但首先不是列出页面并提交任务,而是必须按顺序处理页面。

myHugeList.getNextPage().each { withPool(threadCount) { Closure.callAsync().get() } }

谢谢,叶菲姆

0 投票
1 回答
81 浏览

concurrency - GPars 演员模型是使用用户线程还是本机操作系统线程

我知道当没有消息要处理时,演员不会消耗线程,并且仅在消息到达时才将自己附加到线程。但是我的问题是,当演员附加到线程时,它是什么类型的线程 - 用户线程或本机操作系统线程?

我想基本上了解如果演员中有一些阻塞代码会发生什么,比如一些 i/o 调用或等待 Web 服务的响应?线程会保持阻塞还是线程将被释放并可供其他参与者使用?据我所知,如果它是本机线程,那么它将被阻塞。但是,如果它是用户线程,则本机线程可能不会被阻塞

0 投票
1 回答
152 浏览

actor - GPars Actors 是容错的吗

GPars 中的参与者有自己的消息队列(邮箱)。假设一个演员有 15 条待处理的消息,突然系统出现故障(比如由于电源故障)。这 15 条消息会发生什么。当系统重新启动并运行时,消息队列会自动恢复吗?还是队列中的消息会丢失?

0 投票
1 回答
6345 浏览

groovy - 如何同时执行两个任务并在 Groovy 中等待结果?

我有一个大型处理任务,我认为通过并发性和并行性提高效率已经成熟。

我查看了 GPars 文档,发现它们很混乱,所以我希望这里的人们可以提供帮助。

我想并行执行的第一个任务目前看起来像这样:

两者都返回一个对象列表,并且都可以并行运行。

我想一起执行它们,然后在处理返回列表之前等待它们完成(然后我将在列表之间查找匹配项,但我稍后会谈到)。

谢谢

拉克什

0 投票
1 回答
262 浏览

hibernate - GORM GPARS 集成测试

我正在尝试集成测试 Gorm 悲观锁,并通过多线程同时模拟来自多个服务器的访问,但在每个线程中我都没有得到预期的结果。这是我的代码:

我不知道发生了什么,我认为我的 Hibernate sessionFactory 没有绑定到每个线程,并且我应该工作的 Domain.withTransaction ,但它没有。

有什么帮助吗?

0 投票
1 回答
246 浏览

groovy - 如何了解 Gpars runForkJoin 和 forkOffChild 方法

我正在尝试使用这些方法但没有成功,如果有人可以帮助我,我会很高兴。我正在使用 groovy,我有 2 个字符串映射。我想用线程(由 gpars 使用)在 2 个映射的字符串之间进行匹配 例如:def firstMap = ["a":"A", "b":"B"] def secondMap = ["c":" C", "a":A"]

地图之间相等的正常方法是

我想用 gpars 线程来做,所以我尝试了:

我对这个有点陌生,我真的不知道如何让它工作。我将不胜感激。谢谢,或者。

0 投票
1 回答
87 浏览

gpars - 使用 GPar 处理树中的节点并缓存已处理的节点

我正在处理一棵树,并希望使用 GPAR 加速它。我将它用于简单的事情,但没有深入研究更复杂的选项。

假设我正在用自己的线程处理树的不同分支。

假设一个节点有一个名字。当我第一次点击该节点时,我希望它被处理(包括将内容写入数据库等),并添加到缓存中(这里只是一个简单的地图)。

我希望其他线程可能会在树上的其他地方碰到同一个节点(例如同名的节点),以检查缓存。如果它已经在缓存中,他们可以抓住它并继续前进。如果另一个线程第一次处理该节点,我希望其分支中该节点上的其他线程在继续向下树之前等待(对于依赖于该节点的其他事物已经被处理)。

该节点是从数据库中提取的,因此每个分支中的对象都不相同,我认为同步方法不会起作用。

我当然希望其他不相关的节点继续处理。

例如:

  • 线程 1 正在处理 ABCD
  • 线程 2 正在处理 EBFG
  • 线程 3 正在处理 WXY
  • 线程 4 正在处理 LMNOPQRSBJ

假设线程 1 首先到达节点 B。它发现它不在缓存中,所以它开始处理它。

线程 2 出现并看到节点 B 不在缓存中,但它正在处理中。所以它等待继续到节点 F,直到线程 1 完成处理节点 B。

线程 3 不关心节点 B,因此继续运行。

线程 4 在线程 1 处理完节点 B 并在缓存中找到节点 B 之后出现,因此它只是将其从缓存中拉出并继续到节点 J。

我正在寻找有关如何最好地将 GPAR 应用于这种情况的建议。

谢谢!

0 投票
1 回答
248 浏览

gpars - GPAR 异步函数和传递由另一个线程更新的引用

在解析文件中的每一行时,我正在使用 GPAR 异步函数来触发进程。

我看到一些奇怪的行为,这让我想知道我是否有线程安全问题。

假设我有一个当前对象正在加载输入电子表格中当前行的值,如下所示:

一旦它具有当前行中的所有值,我就会启动一个看起来有点像这样的异步闭包:

它在同一个类中定义,因此它可以访问 currentRowObject。

当它关闭并运行时,我解析下一行,并从创建一个新对象开始:

并开始用值加载它。

我认为这是安全的,异步函数将指向前一个对象。但是,我想知道是否因为我让闭包绑定到引用,如果以某种方式在异步函数中更新了引用,并且我正在从它下面拉出对象实例,可以这么说 - 在它尝试时更改它处理前一个实例。

如果是这样,有什么修复建议吗?还是我安全?

谢谢!