Одним из наиболее чувствительных недостатков метода сериализации транзакций на основе синхронизационных блокировок является возможность возникновение тупиков (deadlocks) между транзакциями. Синхронизационные тупики возможны при применении любого из рассмотренных выше вариантов механизмов блокировок.
На рис. 13.6 показан простой сценарий возникновения синхронизационного тупика между транзакциями T1
и T2:
Рис. 13.6. Ситуация синхронизационного тупика между транзакциями T1 и T2
и T2
устанавливают монопольные блокировки объектов o1
и o2
соответственно;
требуется совместная блокировка объекта o2, а T2
– совместная блокировка объекта o1;
Поскольку тупики возможны, и никакого естественного выхода из тупиковой ситуации не существует, то эти ситуации необходимо обнаруживать и искусственно устранять.