21、非阻塞并发的模块化终止验证

非阻塞并发的模块化终止验证

1. 引言

程序正确性的理解和证明问题自图灵时代就已被关注。证明程序时,不仅要确保其给出正确答案,还需保证程序能够终止,这对于并发程序而言尤为挑战。当多个线程修改共享资源时,每个线程是否终止往往依赖于其他线程的行为,甚至取决于调度器。

1.1 部分正确性与模块化方法

若仅证明并发程序能产生正确答案,这确立的是部分正确性。近年来,并发程序部分正确性的程序逻辑有诸多发展,这些逻辑强调模块化方法,将模块客户端的验证与其实现解耦,每个操作独立验证,推理局限于线程内部。它们抽象了线程与其环境间的干扰,适用于细粒度并发,特别是非阻塞算法。

1.2 非阻塞算法

非阻塞算法中,一个线程的挂起不会阻碍其他线程的进度。常见的非阻塞属性有等待自由和锁自由。等待自由要求操作无论其他线程干扰如何都能完成;锁自由则要求多个线程操作时至少有一个能取得进展。

1.3 总正确性与 Total - TaDA

若证明程序既产生正确结果又能在有限时间内完成,则确立了总正确性。图灵和弗洛伊德引入了良基关系结合部分正确性论证来证明顺序程序的终止,该技术也适用于并发程序。本文将 TaDA 扩展为 Total - TaDA,用于证明细粒度并发程序的总正确性。Total - TaDA 利用 TaDA 的抽象机制指定保证终止所需的环境约束,保留了 TaDA 的模块化特性。

1.4 TaDA 原子三元组

TaDA 引入了原子三元组的规范形式,支持局部、模块化推理并能表达对并发环境的约束。简单原子三元组形式如下:


                
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值