当今普遍流行的多核架构使得硬并发成为现实.为了从硬件的并发能力获益,并发程序设计正越来越流行.然而由于内在的并发性和不确定性,并发程序易于遭遇并发缺陷,并且它们难以检测、调试和修复.文中指出软件开发正从顺序模式转向并发模式的趋势,揭示并发程序和并发缺陷各自的三大特点,剖析并发缺陷面临的三大挑战,然后将并发缺陷分为死锁、数据竞争、原子性违背和顺序违背4类,并讨论4类并发缺陷的相互关系,接着就如何尽快暴露、及时检测和高效规避各类并发缺陷对已有研究作出分析、比较和归纳,最后从智能快速的缺陷暴露、通用准确的缺陷检测、确定性重放支持、软硬件协同设计和新的并发编程模型等5个方面展望了未来的研究重点.
The prevalent multi-core architecture today makes real concurrency come true.In order to benefit from the concurrency power of hardware,concurrent programming is becoming more and more popular.However,out of inherent concurrency and non-determinism,concurrent programs are more likely to suffer from concurrency bugs,which are hard to detect,debug and repair.In this paper,we point out the trend that software development is turning toward concurrent model from sequential model.We reveal three characteristics respectively for concurrent programs and concurrency bugs and explore three challenges confronted by concurrency bug analysis.We then divide concurrency bugs into four categories,i.e.deadlock,data race,atomicity violation and order violation and investigate relations among them.For each category of concurrency bugs,we make analyses,comparisons and summarizations on previous researches about how to quickly expose,in time detect and efficiently avoid them.At last,we look into the research priorities in future from the following five aspects:smart and quick concurrency bugs exposure,common and accurate concurrency bug detection,deterministic replay support,collaborative design involving software and hardware and new concurrent programming model.