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