- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
在 Scala 中,您可以使用全局 ExecutionContext
如果您不需要通过导入 scala.concurrent.ExecutionContext.Implicits.global
来定义自己的.
我的问题是为什么ForkJoinPool
为这个执行程序选择了而不是 ThreadPoolExecutor
.
我的理解是 fork-join 框架在递归分解问题方面非常出色。您应该编写将任务分成两半的代码,这样一半可以在线程内执行,另一半可以由另一个线程执行。这似乎是一种非常特殊的编程模型,而不是通常适用于在各种可能的应用程序中处理一般异步任务的执行的模型。
那么为什么是 ForkJoinPool
为大多数人可能会使用的默认执行上下文选择?即使您不使用完整的 fork-join 范例,工作窃取设计是否会提高性能?
最佳答案
我不能代表scala 设计师,但是scala 的惯用用法Future
s 通常涉及创建许多非常小的、短期的任务(例如,每个 map
调用都会创建一个新任务),因此工作窃取设计是合适的。
如果您关心这些精确的细节,您可能更喜欢使用 scalaz-concurrent 的 Future
,它使用蹦床来避免为每个 map
创建额外的任务step 并使执行上下文显式(并且 AIUI 默认为 ThreadPoolExecutor
)。
关于multithreading - 为什么 Scala 使用 ForkJoinPool 来支持其默认的 ExecutionContext?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31466987/
我有一个 .Net Framework 控制台应用程序,可以在 Azure 中成功将其发布为 WebJob 并查看它的运行情况。当我尝试向函数添加 ExecutionContext 参数时,我收到上述
我有以下测试用例: test("test future") { import scala.concurrent.ExecutionContext.global import scala
ExecutionContext 可用于函数参数。 但是,它不能通过依赖注入(inject)供其他方法使用,包括 Functions 的构造函数,如下所示: public class Func
ExecutionContext 可用于函数参数。 但是,它不能通过依赖注入(inject)供其他方法使用,包括 Functions 的构造函数,如下所示: public class Func
有人知道 ExecutionContext.Capture() 和 ExecutionContext.Run(context, work, state) 是否很昂贵吗? 它是否会降低性能,因此建议谨慎
我想知道哪个ExecutionContext我应该在 scalatest % 2.2.6 上使用(以及为什么)运行我的 future 并模拟 future 。 class Foo { def f
我一直在开发一个中小型 Web 应用程序,大约有 10 个端点。它应该可以同时处理数百个并发请求。 由于我公司的政策,我必须为我的 Controller 使用 javax.ws.rs,所以每个 Con
我有以下代码: object KafkaApi { private implicit val main: ExecutionContextExecutor = ExecutionContext.g
考虑以下代码: private static async Task Main(string[] args) { await SetValueInAsyncMethod(); Print
在每个方法中传递 ExecutionContext 是否更符合 Scala 习惯,例如 class Foo { def bar(a: Int, b: Int)(implicit ec: Exe
我试图发现 ExecutionContext实际上适用于 .NET Framework 4.0 及更高版本。文档说,在使用 Thread.Start 和大多数线程池操作时,托管原则、同步、区域设置和用
假设我想知道给定 ExecutionContext 中有多少个线程. 所以我正在写一个这样的函数 def count(implicit ec: ExecutionContext): Int = {
我知道,当您通过调用 BeginInvoke() 或 ThreadPool.QueueUserWorkItem(...) 并行运行某些方法时,.NET 框架正在捕获包含代码访问安全信息和其他一些内容的
在 scala 中使用 future 时,默认行为是使用默认的 Implicits.global 执行上下文。看来这默认为每个处理器提供一个可用线程。在更传统的线程 Web 应用程序中,当 futur
我有一个 Spring 批处理作业,它使用如下 Web 参数执行: https://localhost:8443/batch/async/orz003A?id=123&name=test 我已将这些参
我希望将隐式 ExecutionContext 传递给部分实现的特征。 在代码示例中: import scala.concurrent.Future trait Processor[T,R] {
我正在使用 Scala 2.10 future 创建一个异步库。库的构造函数采用一系列实现特定特征的用户定义对象,然后库类上的方法将一些数据逐个发送到用户定义对象中。我希望用户提供ExecutionC
这是一个相当笼统的问题,但希望是一个合理的问题。什么时候ExecutionContext#reportFailure(Throwable)叫? Scala 标准库中似乎没有调用它。我想我也许应该在某些
当我制作 future ,或应用类似 onSuccess 的方法和 map ,我可以为它们指定 ExecutionContext 。 例如, val f = future { // code }
我有这两个错误: Error:(39, 20) Cannot find an implicit ExecutionContext. You might pass an (implicit ec: Ex
我是一名优秀的程序员,十分优秀!