Предотвращение тупиковых ситуаций - это не то, что может быть изолировано от отдельных (меньших) частей более крупной системы;он должен быть системным (применяется ко всей системе меньших частей).
Мне известны только два подхода:
a) "глобальный порядок блокировки".Основная идея заключается в том, чтобы все замки были приобретены в порядке;что требует установления порядка для всех возможных блокировок во всей системе.Например;если одна часть системы имеет блокировку, защищающую очередь FIFO, а другая часть системы имеет массив с блокировкой для каждой записи массива;тогда вы можете решить, что порядок «Блокировка очереди FIFO; затем блокировка записи массива в порядке индекса массива».
b) Нет блокировок.Это может быть так просто, как не иметь никаких потоков;или такой сложный, как использование модели «ничего не передается, передача сообщений» (где каждый фрагмент данных принадлежит определенному потоку, и никакие другие потоки не могут получить к нему доступ, а все остальные потоки должны попросить владельца действовать от их имени).