发明名称 用于检测多线程程序中潜在竞争的方法和系统
摘要 提供了克服先前锁集方法缺点的动态竞争检测系统和方法,所述先前锁集方法会产生许多假阳性,尤其是在线程衍生/连接和异步调用环境中。对于每个共享存储单元,维持有保护该单元的锁集和访问该单元的并行线程分段集。为了维持这些集合,每个线程维持当前持有的锁集和排列在其当前线程分段之前的线程分段集。每个线程也维持有在该线程衍生第二线程时递增的虚拟时钟。线程分段是包含线程标识符和虚拟时钟值的对。当特定共享存储单元的锁集为空且该存储单元的并行线程集的基数大于1时报告数据竞争。
申请公布号 CN100517235C 申请公布日期 2009.07.22
申请号 CN200510063733.0 申请日期 2005.03.24
申请人 微软公司 发明人 Y·于
分类号 G06F9/46(2006.01)I 主分类号 G06F9/46(2006.01)I
代理机构 上海专利商标事务所有限公司 代理人 顾嘉运
主权项 1.一种用于动态检测程序中潜在竞争条件的系统,所述程序具有多个线程和一个或多个共享存储单元,其特征在于,所述系统包括:对于每个共享存储单元,用于维持与所述每个共享存储单元相关联的第一锁集的装置,以及用于维持访问所述每个共享存储单元的并行线程分段集的装置;对于每个线程,用于维持每个线程相关联的各自的虚拟时钟(Ct)的装置;用于维持一线程所获取和释放的第二锁集的装置;以及用于维持排在所述线程的当前线程分段之前的线程分段集的装置,其中,所述线程分段使用相关联的各虚拟时钟来进行排序;当检测到一先前线程(t)衍生的新并行线程(t1)时:用于递增与所述先前线程(t)相关联的虚拟时钟(Ct)的装置;用于初始化所述新并行线程(t1)相关联的虚拟时钟的装置;用于通过形成所述先前线程(t)的当前排序集和具有线程分段<t,Ct>的单元素集的并集来更新所述先前线程(t)之前的排序的线程分段集(Bt)的装置,所述线程分段集包括由线程标识符和虚拟时钟组成的多元组;依据对存储单元(x)的读和写的检测,用于确定是否存在潜在竞争条件的装置。
地址 美国华盛顿州