问题标签 [executioncontext]

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 回答
2035 浏览

scala - 在 Akka-Streams 中与 mapAsync 一起使用的 ExecutionContext

我刚刚开始使用 Akka Stream,我正试图弄清楚:

目前,在我的流程中,我正在使用 mapAsync() 与我的休息服务集成,如此处所推荐

我一直在想, mapAsync() 应该使用什么执行上下文?它应该是我的 ActorSystem 的调度员吗?全球?在这两种情况下是否有任何不明显的后果?

我意识到这可能是一个愚蠢的问题,但我以前从未处理过 Akka,在任何涉及 Futures 的 scala 应用程序中,我只使用过全局执行上下文。

0 投票
1 回答
26 浏览

apache - 将任务发布到 Web 控制台执行(管理)上下文

在 apache brooklyn Web 界面中,我们想为系统管理器显示一些内容。内容太长,无法用作简单的传感器值。

我们的想法是创建一个任务并将内容写入任务的输出流,然后向管理器提供基于 REST 的 URL,如下所示:/v1/activities/{task}/stream/stdout(当然链接被屏蔽有一些不错的文字)

流和任务是这样创建的:

该任务似乎已创建,并且交互工作得非常好。但是,当我想使用准备好的 URL 从浏览器访问任务输出流时,我收到任务不存在的错误。

我们的想法是我们不在正确的管理/执行环境中。与实体及其传感器相比,网页在其他上下文中运行。我们如何放置一个任务,以便它在 Web 控制台上下文中也可见。

是否可以将内容写入文件,然后通过 Jetty(布鲁克林网络服务器)提供下载?那将是一个更简单的方法。

0 投票
1 回答
299 浏览

scala - 用于 REST API 调用的 Scala ExecutionContext

在我的应用程序中,它是一个 HTTP 服务,它公开了可以被其他服务使用的几个 API,我有一种情况,我必须调用 2 个不同的外部服务,它们是一个消息传递服务和另一个 REST 服务。

我了解对于这些 I/O 绑定操作,使用单独的线程池或 ExecutionContext 是一个好习惯。我正在使用以下内容在我的 application.conf 中为自定义 ExecutionContext 创建配置:

我有一些问题:

  1. 这会创建 10 个专用线程吗?
  2. 我如何知道最大并行度的大小?
  3. 假设我要使用这个执行上下文来进行 REST API 调用,我应该如何调整它的大小?
0 投票
1 回答
1965 浏览

multithreading - 配置 Fork Join 线程池

我有一个关于使用 fork join 线程池的简单问题。这是我正在使用的一个简短示例:

我不确定的是,在这种情况下会创建多少个线程?我在 2 核机器上运行,所以每个内核有 24 个线程,最多 48 个线程?

将并行度因子设置为 4.0,可以并行运行的线程数将是 8。那么设置最小值和最大值(我的情况是 24 和 48)需要什么?

0 投票
1 回答
268 浏览

javascript - Javascript:使用不同的执行上下文执行函数

有没有办法在执行时手动更改 Javascript 函数的执行上下文?

不是在谈论将this引用更改为指向不同的对象 - 我知道这可以通过Function.prototype.call()/apply().

我说的是更改函数可访问的变量,或者更具体地说,授予对函数定义范围之外的变量的访问权限。

例子:

在此示例中,我希望该函数func能够在调用它时访问test定义的变量callFunciton。但是,由于范围和执行上下文在 Javascript 中的工作方式,它不能那样工作。

我正在寻找一种方法callFunction来插入在调用test的执行上下文中callee()调用的变量。


在这个最小的例子中,当然可以将 test 作为参数添加到 func()。

然而,我的用例是一个带有插件基础设施的框架,其中插件可以指定回调以及它们采用的参数 - 以及参数类型。然后框架负责将请求的数据转换为请求的类型并将它们提供给回调。这应该对插件完全透明。

伪代码:

插入

框架

到目前为止,我找到了三个解决这个问题的方法,我都不喜欢:

  • 在 callback 中定义参数,并且只在 callbackParams 中定义它们的类型,按它们在函数声明中的顺序索引。缺点:参数必须在两个地方声明。
  • 使用this.paramname而不是仅paramname在回调中使用,并.call()/.apply()在 `handleEvent() 中使用。缺点:对插件不透明。
  • 在调用之前将变量分配给全局范围,handler.callback()然后handleEvent()再次删除它们。缺点:非常难看的解决方法。

想法?

0 投票
2 回答
60 浏览

javascript - 此 Javascript 代码的问题(我认为与执行上下文有关)

在调整大小时,我希望代码运行第一个 if 语句:“我认为这太小了”。在第二次调整大小时,我希望它运行第一个备用:“我认为这太大了”。它只运行一次,是不是因为变量调整只是局部的并且不会第二次停留?

0 投票
1 回答
1294 浏览

java - Are dead threads replaced in an ExecutionContext and/or Java thread pool?

When a thread dies due to an exception, what happens to this thread? If it is inside a thread pool, does it spawn a new thread? I'm interested in what happens in scala ExecutionContext, but since an ExecutionContext wraps a java thread pool, I think that Java users will also know the answer.

For example, if I create an ExecutionContext wrapping a FixedThreadPool(100), if one thread dies, does he thread pool replace the thread?

0 投票
0 回答
721 浏览

scala - IO 的“最佳”ExecutionContext

我的 Scala 代码中有一些同步调用。我已经将它们包装在一个blocking() 上下文中,然后在一个Future: Future(blocking(syncCall())) 中,但我不知道要使用哪种类型的ExecutionContext。

我知道可能有很多可能性,并且没有 ExecutionContext 是“最好的”。我只需要一些信息,以免选择最坏的情况,因为那里有很多信息,而且我脑子里一团糟。

0 投票
3 回答
265 浏览

javascript - Javascript:为什么具有全局执行上下文的回调函数可以访问范围变量?

在以下代码中:

x 的作用域是测试,这是定义回调函数的地方。我本来希望行cb()会引发错误,因为 logCb() 函数无权访问 x 变量。

然而,这种情况并非如此。为什么?似乎回调中的引用是在分配期间创建的,而不是在执行期间创建的——如果你考虑提升,我想这是有道理的——即在编译期间,回调函数是否被提升到“测试”的顶部,然后分配发生在测试中范围?

我读过执行与范围不同。在这篇文章中:http ://ryanmorr.com/understanding-scope-and-context-in-javascript/ ,这句话scope pertains to the variable access of a function when it is invoked and is unique to each invocation似乎暗示回调是从测试函数内部调用的。

因为在我看来,无论在哪里调用回调函数,它仍然会被限定在测试范围内。

我想我的问题是:

在考虑范围和执行上下文时,如何在定义和调用方面处理回调函数?

0 投票
1 回答
241 浏览

javascript - 为什么 ES6 IIFE 和 ES5 IIFE 的执行上下文不同?

关于标题总结了这个问题 - 这是代码示例:

箭头函数在幕后发生了什么?如果我想要 ES5 中的那个范围,据我所知,我必须将执行绑定到一个空对象,如下所示: