朝向使用共享表空间的多线程本地表格化

摘要:多线程目前已被多个著名Prolog系统支持,为能从并发中受益的应用程序提供高度可移植的解决方案。当多线程与表格化相结合时,我们可以利用更高的程序控制和声明性语义的能力。然而,尽管某些Prolog系统中同时具有线程和表格化功能,但这两个特性的实现都涉及复杂的相互依赖和底层引擎的联系。迄今为止,XSB是唯一一个将多线程与表格化结合的Prolog系统。在XSB中,表格可以是线程私有或线程共享的。虽然线程私有表格更容易实现,但共享表格存在着所有与锁定、同步和潜在死锁有关的问题。在本文中,我们提出了对XSB方法的替代观点。在我们的提案中,每个线程将其表格视为私有,但在引擎级别上,我们使用一个公共表格空间,其中的表格在所有线程之间共享。我们提出了我们的公共表格空间方法的三种设计:无共享(NS)(类似于XSB的私有表格)、子目标共享(SS)和完全共享(FS)。这项工作的主要目标是减少表格空间的内存使用,但我们使用具有本地评估策略的YapTab表格化系统的实验结果表明,我们还可以在运行时间上实现显著的减少。

作者:Miguel Areias and Ricardo Rocha

论文ID:1210.2282

分类:Programming Languages

分类简称:cs.PL

提交时间:2012-10-11

PDF 下载: 英文版 中文版pdf翻译中