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