跳到主要内容

并发模型

  • 单线程 - 回调、承诺、可观察对象和 async/await:原生 JS
  • 线程/多处理,基于锁的并发
    • 保护临界区与性能
  • 通信顺序进程 (CSP)
    • Golang 或 Clojure 的 core.async
    • 进程/线程通过通道传递数据。
  • 演员模型 (AM):Elixir、Erlang、Scala
    • 本质上是异步的,并且具有跨运行时和机器的位置信息透明性 - 如果您有演员的引用 (Akka) 或 PID (Erlang),您可以通过邮箱向其发送消息。
    • 通过将演员组织成监督层次结构来实现强大的容错能力,您可以在其确切的层次结构级别处理故障。
  • 软件事务内存 (STM):Clojure、Haskell
    • 类似于 MVCC 或纯函数:提交 / 中止 / 重试