数据竞争是多线程程序并发错误的主要来源,目前已有许多静态和动态程序分析技术用于检测数据竞争,但这些检测器或者会产生巨大的检测开销,或者会漏掉许多真实的数据竟争错误。文中提出了一种基于优化的 Fasttrack算法和锁模式的动态混合数据竟争检测算法 Asamplelock。该算法利用采样技术,监控同一时刻同时运行的来自并发线程的函数对,通过预竞争检测获得真正涉及数据竟争的内存访问对,从而减小竟争检测分析开销;为了减弱线程调度对算法相关性能的影响,Asamplelock算法采用 nolock-hb关系来判断访问事件的并发关系;采用map记录所有共享变量的读写信息,并采用锁模式进行动态数据竟争检测,降低漏报率和误报率。基于上述方法实现了原型系统 Asamplelock,选择基准测试集 Parsec对该系统进行评估,并与 Fasttrack算法、 Literace算法和 Multilock-HB算法进行对比。实验结果表明, Asamplelock算法与 Fast Track算法相比整体时间开销平均降低了8%; Asamplelock算法的数据竟争检测率与 Literace算法和 Fasttrack算法相比分别増加了39%和27%。
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
全部0条评论
快来发表一下你的评论吧 !