关于辅助与栈的并发实现分析
在并发系统中,栈的实现是一个重要的研究领域,尤其是在追求无等待(wait-free)和无辅助(help-free)特性的情况下。无等待意味着每个进程都能在有限的步骤内完成其操作,而无辅助则表示一个进程不会帮助其他进程完成操作。下面将详细探讨在不同原语组合下,无等待和无辅助栈实现的可行性。
仅使用读、写和比较交换原语
在一个至少有三个进程的系统中,使用读(read)、写(write)和比较交换(compare&swap)原语时,不存在无等待和无辅助的栈实现。
假设存在这样的实现 Q ,通过构建一个历史场景来进行反证。考虑操作 op1 和进程 p3 的操作,唯一能确定 op1 和 p3 某些操作顺序的步骤是 p1 在特定行(Line 15)的失败比较交换操作。
假设 op1 在 p3 的某个操作 op′3 之后(在 Line 15 之后)被确定顺序。设 h 是 Line 14 之前的历史,构建两个历史 h′ = h ◦p2 ◦p1 和 h′′ = h ◦p2 。让 p3 在 h′ 之后单独执行弹出(pop)操作,直到完成 op′3 ,再继续直到栈为空。由于 op1
超级会员免费看
订阅专栏 解锁全文
3098

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



