2009-03-27 3 views
0

Я увидел инструмент, который может рассказать вам, есть ли у вас проблемы с дизайном в вашем проекте, и мне интересно, есть ли инструмент, который может сказать вам динамически, если в вашем проекте есть проблемы с параллелизмом.Инструмент для обнаружения проблем параллелизма

ответ

1

Шахматы из MS Research отлично (http://research.microsoft.com/en-us/projects/chess/) Он обнаруживает ошибки параллелизма с помощью Unittests и имеет важное значение: они воспроизводятся с помощью шахмат.

+0

Это отличный инструмент, но я искал что-то, что говорит вам динамически, что ваш код подвержен взаимоблокировкам. Например, если у вас есть экранированный объект, вы должны получить предупреждение. –

0

Я думаю, вы обнаружите, что обнаружение этого типа в статическом анализе кода в основном является скрытым Halting Problem и поэтому неразрешимо в общем случае. Такой инструмент почти наверняка не существует.

Ближайшая вещь к инструменту проверки, который существует, состоит в том, чтобы моделировать вычисление как 'Communicating Sequential Processes',, которое может быть подвергнуто формальным математическим рассуждениям. Однако это не позволяет вам создавать инструмент, который может принимать произвольную программу на произвольном языке и вычислять для нее доказательство.