Допустим для курения нужны спички и сигареты(2 ресурса). Разные процессы одновременно захотели курить, один хватает спички, другой сигареты. Далее, они взаимно ожидают освобождения другого ресурса. Это дедлок.
Но вот ведь в чем прикол. IRL это не ведет к остановке жизни на земле, эти ситуации очень просто разрешаются. Как правило, просто один процесс на время уступает ресурс другому, а потом, оба последовательно берут спички и сигареты и закуривают. Конечно, может быть и другое разрешение ситуации — мордобой:) Но он тоже не приведет к дедлоку.
Чудо? Да вроде — нет.
Тогда почему эта проблема существует в CS? И почему ее не существует в Модели Акторов?
Я вообще говоря, не знаю, врать не буду. Чтобы утверждать наверняка надо читать и изучать. Но сходу такая версия: не потому ли это происходит, что какому то из процессов в какой-то момент нужно недетерминированно отдать ресурс другому?