Cha*_*ion 17
当他们说轻量级时,他们意味着每个actor都没有映射到一个线程.
JVM提供共享内存线程,锁定作为并发抽象的主要形式.但共享内存线程非常重量级,并且会因上下文切换开销而导致严重的性能损失.对于基于与JVM线程的一对一映射的actor实现,每个Scala actor的进程有效负载将不会像我们可以为特定计算产生一百万个actor实例那样轻量级.因此,Scala actor被设计为轻量级事件对象,它们在底层工作线程池上进行调度和执行,当所有线程阻塞长时间运行的操作时,它会自动调整大小.实际上,Scala实现了一个统一的actor模型 - 基于线程和基于事件.Scala actor提供两种形式的悬挂机制 - 一个完整的堆栈帧暂停(实现为接收)和一个基于持续闭包的悬架(实现为反应).在基于事件的actor的情况下,等待响应由延续闭包表示,即闭合捕获演员计算的其余部分.当挂起的actor接收到与actor中指定的模式之一匹配的消息时,通过将任务调度到来自底层线程池的一个工作线程来执行继续. Haller和Odersky 的 论文 "统一线程和事件的演员"讨论了实现的细节.
| 归档时间: |
|
| 查看次数: |
2096 次 |
| 最近记录: |