今天讲的这篇文论中提到的Lockset方法同样也是和Happens-Before结合来进行动态数据竞争检测,这篇论文中使用的Happens-Before方法不是上一篇文章中提出的Djit+方法,而是使用Threadset方法,同时这篇论文提出的自适应检测方法能够在Threadset和Lockset自由切换,并且在检测共享对象的粒度上也是自适应的(这里的话不会提如何自适应的,将会在以后的文章中提到)。
Reference:
Yu Y, Rodeheffer T, Chen W. Racetrack: efficient detection of data race conditions via adaptive tracking[C]//ACM SIGOPS Operating Systems Review. ACM, 2005, 39(5): 221-234.
我们还是主要来关注一下Lockset的状态变迁在这篇文章中是如何进行的。
在对Lockset进行分析之前,我们有必要需要知道文中使用的Happens-Before方法,这里的话就简单理解方法,不会非常细致的展开说明,只要能够有助于我们立即Lockset方法就行。
Happens-Before方法:Threadset
此方法和Djit+类似,Threadset为每一个共享变量x维护一个并发访问集Sx,并发访问集中的元素就是<t,Bt(t)>(t表示的就是线程t标志,而Bt(t)表示的就是线程t最近对x进行访问的时钟)。