共享内存并发的无死锁语义
1. 源语言与目标语言
源语言是 CoreML 的扩展,它是一种兼具函数式(嵌入按值调用的 λ - 演算)和命令式特性的语言,并丰富了并发编程原语,如线程生成构造 (thread e) 和锁构造 (lock e0 in e1) 。源语言的主要特点是明确区分值和值的引用,例如在 ML 中不能写 x := x + 1 ,因为 x 不能既是整数(如 x + 1 中的 x )又是整数的引用(如 x := 1 中的 x )。我们将 ML 的引用创建构造 (ref e) 细化为 (cref e) ,它是一个函数,需要应用于一个虚拟参数才能实际创建一个可变引用,初始值为 e 的值, (ref e) 是 ((cref e)()) 的缩写。
源语言的语法如下:
v, w ... ::= x | λxe // 值
e ::= v | (e1e0) // 表达式(函数式)
| (cref e) | (! e) | (e0 := e1) // (命令式)
| (thread e) | (lock e0 in e1) // (并发)
抽象 λxe
超级会员免费看
订阅专栏 解锁全文
1万+

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



