文摘
Concurrent data structures have found increasingly widespread use in both multi-core and distributed computing environments, thereby escalating the priority for verifying their correctness. Quasi linearizability is a relaxation of linearizability to allow more implementation freedom for performance optimization. However, ensuring the quantitative aspects of this correctness condition is an arduous task. We propose a new method for formally verifying quasi linearizability of the implementation model of a concurrent data structure. The method is based on checking the refinement relation between the implementation and a specification model via explicit state model checking. It can directly handle concurrent programs where each thread can make infinitely many method calls, and it does not require the user to write annotations for the linearization points. We have implemented and evaluated our method in the PAT verification framework. Our experiments show that the method is effective in verifying quasi linearizability or detecting its violations.