scala – 并发概述
发布时间:2020-12-16 18:33:21 所属栏目:安全 来源:网络整理
导读:由于 Scala提供了一个处理并发性的很好的套件(Akka,并行集合,期货等),它也让我有些困惑.有什么样的指导线何时使用?某种最佳做法? 解决方法 首先,concurrency != parallelism.后者可以用于基本上以顺序方式推理的问题,但可以有效地划分成可以独立处理的块(
由于
Scala提供了一个处理并发性的很好的套件(Akka,并行集合,期货等),它也让我有些困惑.有什么样的指导线何时使用?某种最佳做法?
解决方法
首先,concurrency != parallelism.后者可以用于基本上以顺序方式推理的问题,但可以有效地划分成可以独立处理的块(在最后再次组合之前).例如,映射和过滤集合,这将是并行集合的场景.
其他一些人已经对actors versus futures进行了推理.简而言之,演员在每个演员都可以封装自己的内部状态的意义上更为面向对象,他们更像是黑盒子.演员并发性也是不确定的,而数据流和期货是确定性的.当您想要跨多台计算机分发任务时,演员是一种自然的选择.参与者可以接受多种类型的消息,而期货允许函数组合超过一种特定类型. (这是简化的,因为Akka现在有类型的频道,我想它可以更容易组合).演员适合等待请求的服务,而期货可以被认为是懒惰的答案. 如果您有多个并发线程,software transactional memory (STM)也是一个有用的抽象. STM本身不管理线程池或并发任务,但与它们结合使用时,它会以安全的方式处理可变状态. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |