无边界的Actor:被囚状态的特赦
编程语言
2017-04-12 v1
摘要
在并发系统中,通常需要某种形式的同步以实现无数据竞争,这对正确性和安全性十分重要。在基于 actor 的系统中,消息被并发交换但由接收 actor 顺序执行。依靠隔离与不共享,actor 可以访问自身状态而不必担心数据竞争,并且 actor 的内部行为可按顺序推理。然而,actor 隔离有时过强以至于无法表达有用的模式。例如,令数据集合的迭代器别名化该集合的内部结构,比每次访问都需经过集合接口允许更高效的实现。在完全隔离下,为维护顺序推理,迭代器必须成为集合的一部分,这会使集合接口膨胀,并意味着客户必须能访问整个数据集合才能使用迭代器。本文提出一种编程语言构造,其允许放宽隔离但不牺牲顺序推理。我们在一个带有 actor 和被动对象的简单 lambda 演算中形式化了该机制,并展示 actor 如何可能在确保与此数据的任何交互仍被同步的同时泄露其部分内部状态。
引用
@article{arxiv.1704.03094,
title = {Actors without Borders: Amnesty for Imprisoned State},
author = {Elias Castegren and Tobias Wrigstad},
journal= {arXiv preprint arXiv:1704.03094},
year = {2017}
}
备注
In Proceedings PLACES 2017, arXiv:1704.02418