金发姑娘

Goldilocks:一个支持竞争和事务的Java运行时。数据争用通常会导致意外和错误的行为。除了导致数据损坏和导致程序崩溃外,数据争用的存在使执行的语义复杂化,而执行的语义可能不再是顺序一致的。受这些观察结果的启发,我们设计并实现了一个Java运行时系统,它监视程序的执行,并在即将发生数据竞争时抛出datarace异常。与其他运行时异常类似,DataRaceException提供了两个关键好处。首先,导致争用条件的访问被中断并在它们导致以后可能难以诊断的错误之前进行处理。第二,如果在执行过程中没有抛出DataRaceException,则可以保证顺序一致。这种强有力的保证有助于排除许多与并发相关的可能性作为错误行为的原因。当捕捉到DataRaceException时,导致它的操作、线程或程序可以优雅地终止。或者,DataRaceException可以作为一种冲突检测机制,不谨慎地使用并发性。我们从Java内存模型中的数据无竞争执行的定义开始。我们将这个定义推广到除了锁和易失性变量用于同步之外,还使用事务的执行。我们提出了一个精确而有效的算法来动态验证执行是否没有数据竞争。该算法通过处理事务并提供区分读写访问的能力,将Goldilocks算法推广到数据竞争检测中。我们已经在kaffejava虚拟机上实现了我们的算法和DataRaceException。我们已经在各种公开可用的Java基准测试和一些结合了基于锁和基于事务的同步的微基准上评估了我们的系统。实验表明,我们的实现具有合理的开销。因此,我们相信除了作为一个调试工具之外,DataRaceException可能是一个可行的机制来加强多线程Java程序的执行安全性。

这个软件也是同行评审按日记帐汤姆斯.