异步方法调用和期货的安全实现
1. 操作语义
程序的语义通常用标记迁移系统(LTS)来表示。一般来说,LTS 是一个四元组 (L = (S, A, \to, s_0)),其中 (S) 是状态集合,(A) 是标记集合(两者都可以是无限的),(\to) 是 (S \times A \times S) 的子集,(s_0 \in S) 是起始状态。我们用 (s \stackrel{\alpha}{\to} s’) 表示 ((s, \alpha, s’) \in \to)。假设 (A) 包含一个特殊的标记 (\tau),称为沉默标记。LTS 通过带有非沉默标记的迁移与外部环境进行通信。
程序的运行时配置(即 LTS 的状态)是一组对象。每个对象与零个或多个任务相关联,配置还记录了向环境公开的对象和任务名称。形式上,运行时配置如下:
[
P ::= o[C, \sigma, \phi] \mid n \langle o, \sigma, s \rangle \mid p(o) \mid p(n) \mid P \parallel P
]
- 每个对象由其标识符 (o)、类 (C)、状态 (\sigma)(其字段的值)以及它接收到的期货的值 (\phi)(从名称到值的映射)表示。
- 每个任务由其标识符 (n)、所属对象 (o)、待执行的语句 (s) 以及其状态 (\sigma)(其局部变量的值)表示。
- (o) 和 (n) 都是名称,对象和任务的名称在一个配置中不会重复,操作 (\parallel) 是可交换和可结合的。
符号 (p(o)) 表示名称 (o) 是公开的,即环境知道它。环境可能知道名称 (o),但对象 (o[C, \
超级会员免费看
订阅专栏 解锁全文
1360

被折叠的 条评论
为什么被折叠?



