Недавно я работал над многопоточной программой, которая имеет чрезвычайно сложные инварианты блокировки.Я надеялся проверить, что в программе нет возможных взаимоблокировок или гонок, но типичный модульный тест может не показать этого, потому что временные параметры потока могут просто сработать таким образом, что тест пройдет, даже если существует ошибкав коде.
Мне было бы любопытно, есть ли инструмент, позволяющий связываться с тремя временами таким образом, чтобы тест можно было запускать несколько раз, каждый раз, когда разные потоки получают разные временные интервалы в разных порядках.Существует ли такой инструмент?Или есть другой хороший инструмент, который может облегчить отладку?
Эта программа написана на C, но я отвечу на любом языке, так как мне больше всего интересно, что там, даже если это не так.непосредственно применимо здесь.