问题标签 [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 回答
388 浏览

groovy - 有没有办法使用 GPars 运行延迟或计划的任务?

我正在 GPars 库之上构建我的并发应用程序。它在底层包含一个线程池,所以我想通过这个池来解决所有与并发相关的任务。

我需要以一定的延迟(例如 30 秒)运行任务。我也想定期运行一些任务。

有什么方法可以用 GPars 实现这些东西吗?

0 投票
1 回答
151 浏览

multithreading - makeConcurrent 似乎在 Gpars 中不起作用

以下程序应该返回具有空值的行列表。

有时,结果并不相同。这可能是由于 makeParallel 的一些问题。如果不是 makeParallel,我如何使用 GPars 创建并发列表?

0 投票
2 回答
121 浏览

multithreading - 如何保证 GPars 线程池中任务的执行/呈现顺序?

我正在使用 Gpars 线程池运行一组任务。任务执行时间变化很大,从几秒到 20 分钟不等。(这些是黄瓜功能文件 FWIW。)

幸运的是,features列表中的最后一个任务运行时间最长,所以当所有其他线程都完成时,整个进程会在那里执行 runtest('australian_government_rebate.feature') 25 分钟。

这意味着多线程没有兑现它的承诺。单线程测试需要 65 分钟才能运行,多线程测试需要 48 分钟。我希望30分钟或更长时间。

我的解决方案是按以前的执行时间对功能文件进行排序:

我的问题是:我可以保证这些功能将按照它们出现的顺序呈现给 GParsPoolfeatures吗?

0 投票
2 回答
241 浏览

groovy - 完成所有工作后终止现有池

好的,gpars 是全新的,所以如果这有一个明显的答案,请原谅我。

这是我的场景。我们目前有一段代码包装在 Thread.start {} 块中。它这样做是为了可以在后台将消息发送到消息队列而不阻塞用户请求。我们最近遇到的一个问题是对于大型工作块,用户可能会执行另一个操作,这会导致该块再次执行。由于它是线程化的,因此第二批消息可能会在第一批消息之前发送,从而导致数据损坏。

我想将此过程更改为与 gpars 一起作为队列流工作。我见过创建池的示例,例如

或者

然后将池用作

这似乎可以解释如果用户再次执行操作,我可以重用创建的池并且操作不会乱序执行,前提是我的池大小为 1。

我的问题是,这是使用 gpar 执行此操作的最佳方法吗?此外,我如何知道池何时完成所有工作?当所有工作完成时它会终止吗?如果是这样,是否有一种方法可用于检查池是否已完成/终止以知道我需要一个新池?

任何帮助,将不胜感激。

0 投票
0 回答
197 浏览

hibernate - 休眠到 GPars 池中

我试图找到一个对象(Worker 的实例),但它没有在 Gpars 池中检索。

在池之前,一个 Worker.list() 给了我这个类的所有实例,但是在池里面,结果大小是 0,当然,动态查找器没有给出任何结果。

0 投票
1 回答
79 浏览

java - 2015 年 8 月 24 日开放海豚状态

该图书馆在 2015 年 8 月 24 日的状态如何?该网页有几个月没有移动。

0 投票
1 回答
786 浏览

json - Groovy JsonBuilder 将 \u0000 附加到字符串

我正在尝试为我正在制作的 Unity3D 游戏制作一个简单的 UDP 套接字服务器,并且我已经让它大部分工作。我可以向它发送消息并阅读消息。但是当我试图将消息发送回客户端时(目前用于测试目的),我得到了一个 BufferOverFlowException。

在发回数据之前,我使用 groovy.json.JsonBuilder 将其转换为 json。数据有一个非常简单的结构:

[数据:“Hello World”]

但无论出于何种原因,JsonBuilder 将其构建为

{ "data": "Hello World\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\..." }

\u0000 会持续一段时间。长到足以让我的 1024 字节长的 ByteBuffer 溢出。

这是负责将数据发送回客户端的类:

这是我得到的堆栈跟踪:

有问题的数据被编码为 UTF-8,如果有帮助的话。

这是负责向服务器发送数据的客户端代码(用 C# 编写):

0 投票
1 回答
244 浏览

multithreading - GPars、GORM、批量上传

我有一个流程需要构建一个 PDF 文档并将其与正在创建的 100 多个其他文档相结合。

我想多线程这个。我将需要生成的 PDF 并保存到数据库的事件列表传递给服务。文档也保存为目的地,路径保存到数据库。

所以我使用 10 个线程的 GPars。我遇到了一个问题,当我懒惰地从事件中提取时,我收到一条错误消息

未能延迟初始化角色集合:com.srm.billing.DepositNotice.depositNoticeRevisions,没有会话或会话已关闭;嵌套异常是 org.hibernate.LazyInitializationException: failed to lazily initialize a collection of role: com.srm.billing.DepositNotice.depositNoticeRevisions, no session or session was closed

我注意到几个站点都在说 Hibernate 不是线程安全的,我认为这是导致问题的原因。

我看到的结果是,当发生此错误时,之前处理的事件将提交给数据库,这是一个问题。

我的最终目标是传递给方法的事件列表作为一个批次完成,如果 1 失败,则不会将任何记录提交到数据库。

0 投票
0 回答
243 浏览

grails - grails 3.0.9 是否使用 Gpars?

我正在阅读此内容:https : //grails.github.io/grails-doc/3.0.x/guide/async.html 我试图了解最新的 Grails 是否默认使用 Gpars。

它是这样说的:

出色的 GPars 项目为异步编程技术提供了一系列不同的 API,包括 Actor、Promise、STM 和数据流并发。添加 Grails 2.3,Grails 的 Async 特性旨在简化框架内的并发编程,并包含 Promises 的概念和统一的事件模型。

所以我猜不是?

如果我需要使用 Gpars,我需要做什么?我就跟着这个? http://www.gpars.org/guide/guide/gettingStarted.html

0 投票
1 回答
380 浏览

asynchronous - Waiting on multiple async gpars dataflow tasks with timeout

I'm struggling to achieve a goal of having multiple async tasks that have general timeout. The trick is that I need to process whatever was received within the timeout.

For example the code below gets the value of both tasks when timeout value is more than two seconds. But once the timeout is decreased (or alternatively the tasks are taking longer), only an TimeoutException is thrown and none the task results are received.

Instead of get() using join() does not throw the TimeoutException, but then again it does not return the final results either and continues processing the code after the timeout expires.

Either I don't understand the Dataflow structures fully/enough/correctly, I'm trying to use them incorrectly, or both.

Basically what I need is a sync block that triggers several async jobs with a common timeout, returning whatever responses that there were available when timeout happened. Timeout is more of an exceptional case, but does happen occasionally for each of the tasks and should not effect overall processing.