Журнал "Программная инженерия"
Теоретический и прикладной научно-технический журнал
ISSN 2220-3397

Номер 6 2017 год

DOI: 10.17587/prin.8.250-257
УДК: 004.4'22
Язык описания синхронизационных контрактов для задачи поиска гонок в многопоточных приложениях
В. Ю. Трифанов, канд. техн. наук, инженер-программист, e-mail: vitaly.trifanov@gmail.com, Д. И. Цителов, руководитель группы внутренних разработок, Devexperts LLC, г. Санкт-Петербург

Состояние гонки приложения (data race) — это одновременное обращение двух потоков к одной и той же памяти, причем одно из обращений является записью. Гонки являются одним из самых частых и трудно обнаружимых типов ошибок параллельного программирования. Существует много методов поиска гонок, однако ни один из них не дает полной гарантии. Широко используется динамический поиск гонок, который, однако, обладает высокими накладными расходами. Для решения этой задачи авторами была разработана концепция обнаружения гонок на основе синхронизационных контрактов. Для описания контрактов применялся XML-язык, однако при практическом использовании этого языка был выявлен ряд ограничений, затрудняющих создание и повторное использование контрактов. В данной работе представлен новый язык описания контрактов, близкий по синтаксису к языку Java, приведены рекомендации по его применению и примеры описания контрактов для классов пакета java.util.concurrent.

Ключевые слова: параллельное программирование, состояние гонки, динамическое обнаружение гонок, контракты, Java-приложения
Стр. 250–257
Работа выполнена при поддержке гранта РФФИ 15-01-05431-а.