Глобальный фиксированный порядок блокировок
Как работает задание блокировкам глобального фиксированного порядка? Для чего это нужно?
Источник: Stack Overflow на русском
Как работает задание блокировкам глобального фиксированного порядка? Для чего это нужно?
Это способ избежать взаимоблокировок (deadlocks).
Работает он просто: всем ресурсам присваиваются уникальные номера. Блокировать ресурсы каждому потоку разрешается только в порядке увеличения номера, снятие блокировки, соответственно, происходит в порядке уменьшения.
Полезнее всего данный метод оказывается в ситуациях, когда все ресурсы, для которых понадобится взять блокировку, оказываются известны заранее. Так, в задаче об обедающих философах можно пронумеровать вилки и заставить философов брать вилки в порядке возрастания. Аналогичное решение применимо в задаче о банковских счетах и переводах между ними.