Journal "Software Engineering"
a journal on theoretical and applied science and technology
ISSN 2220-3397

Issue N6 2017 year

DOI: 10.17587/prin.8.250-257
A Language for Specification of Synchronization Contracts for Detecting Data Race in Parallel Applications
V. Yu. Trifanov, e-mail: vitaly.trifanov@gmail.com, D. I. Tsitelov, tsitelov@acm.org, Devexperts LLC, Saint-Petersburg, 197110, Russian Federation
Corresponding author: Trifanov Vitaly Yu., Senior Developer, Devexperts LLC, Saint-Petersburg, 197110, Russian Federation, E-mail: vytaly.trifanov@gmail.com
Received on March 8, 2017
Accepted on March 29, 2017

Today parallel programming is actively used in many areas — business applications, telecommunications, etc. However it is not easy to develop parallel programs. One of the most serious errors of parallel programing is data races. These are situations when two or more parallel program entities (process, threads, etc.) read/write the same variable simultaneously, and one of them writes to it. Such errors are really hard to found, they lead to unpredictable corruption of application data and strange program behavior. There are a lot of approaches to cope with date races, however there is no absolutely reliable one. Dynamic paradigm of data race detection is widely used, but it leads to high overheads. We suggested a dynamic approach in our previous papers, that used synchronization contracts to cope with the overhands problem. Also we presented a toolkit for data race detection in Java-applications. Here we suggest a Java-like language to specify contracts. We also present a number of contract examples for java.util.concurrent library, and guidelines for industrial using the language and the approach.

Keywords: parallel programming, data race, dynamic approach to date race detection, design contracts, Java-applications
pp. 250–257
For citation:
Trifanov V. Yu., Tsitelov D. I. A Language for Specification of Synchronization Contracts for Detecting Data Race in Parallel Applications, Programmnaya Ingeneria, 2017, vol. 8, no. 6, pp. 250—257.
This work was supported by the Russian Foundation for Basic Research, project no. 15-01-05431-a.