咨询热线:13080701712
返回 行业见闻

电子锁无锁算法的整体系统

    无锁算法旨在通过最大限度地提高进程并行操作的潜力来提高并发程序的性能。无锁算法保证在整个系统内,某些进程最终将完成其操作(而不是保证所有操作最终都会完成)。由于无锁算法可能允许并发进程之间存在高度干扰,并且它们的进度属性非常重要,因此如果没有正式的机器检查验证,很难保证它们的正确性。

    在本文中,我们描述了一种证明无锁进度属性的方法。该方法基于在流程集上构建有充分依据的排序。使用著名的无锁堆栈算法作为示例演示了该方法,并且我们描述了如何使用定理证明器来检查证明。 并发表系统实现中的一个关键部分是表空间的设计。表示表的最成功的提议之一是基于两级 trie 数据结构,其中一个 trie 级别存储表格子目标调用,另一级存储计算的答案。

    在这项工作中,我们提出了一种简单而高效的无锁设计,其中两个级别的尝试都可以在并发环境中的线程之间共享。为了实现无锁,我们利用了 CAS 原子指令,该指令现在可以在许多常见架构中广泛使用。 CAS 降低了线程访问并发区域时同步的粒度,但仍然会遇到低级问题,例如错误共享或缓存内存副作用。为了在表空间数据结构上的并发搜索和插入操作中尽可能有效,我们的设计基于哈希特里数据结构,通过分散尽可能多的数据结构来最大限度地减少潜在的低级同步问题。可能的并发区域。 Yap Prolog系统中的实验结果表明,我们新的无锁哈希树设计可以有效地减少执行时间,并且比以前的设计更好的扩展性。