Глобальный фиксированный порядок блокировок

Рейтинг: 3Ответов: 1Опубликовано: 28.04.2015

Как работает задание блокировкам глобального фиксированного порядка? Для чего это нужно?

Ответы

▲ 8Принят

Это способ избежать взаимоблокировок (deadlocks).

Работает он просто: всем ресурсам присваиваются уникальные номера. Блокировать ресурсы каждому потоку разрешается только в порядке увеличения номера, снятие блокировки, соответственно, происходит в порядке уменьшения.

Полезнее всего данный метод оказывается в ситуациях, когда все ресурсы, для которых понадобится взять блокировку, оказываются известны заранее. Так, в задаче об обедающих философах можно пронумеровать вилки и заставить философов брать вилки в порядке возрастания. Аналогичное решение применимо в задаче о банковских счетах и переводах между ними.