Вероятно, вы не раз наблюдали на трамвайной остановке следующую забавную картину (рис. 29.6).
Рис 29.6. Ситуации тупиков
возникают не только в программировании
Рисунок дает исчерпывающее пояснение ситуации
тупиков. Тупики имеют место, когда поток ожидает ресурс, который в данный момент
принадлежит другому потоку. Рассмотрим пример. Поток 1 захватывает ресурс А,
и для того чтобы продолжать работу, ждет возможности захватить ресурс Б. В то
же время Поток 2 захватывает ресурс Б и ждет возможности захватить ресурс А.
Развитие этого сценария заблокирует оба потока; ни один из них не будет исполняться.
Ресурсами могут выступать любые совместно используемые объекты системы — файлы,
массивы в памяти, устройства ввода/вывода и т. п.
В ситуации на картинке три трамвая захватили
по одному ресурсу (перекрестку) и пытаются захватить еще один, что, очевидно,
невозможно без освобождения уже захваченных. В жизни ситуация разрешилась просто
— самый молодой из водителей был вынужден отъехать. В информационных технологиях
все бывает сложнее. Откройте любой документ, сопровождающий очередной пакет
обновления к любой версии Windows. Очень часто там можно найти информацию об
одной-двух исправленных ситуациях тупиков.
Знаете ли Вы, что релятивистское объяснение феномену CMB (космическому микроволновому излучению) придумал человек выдающейся фантазии Иосиф Шкловский (помните книжку миллионного тиража "Вселенная, жизнь, разум"?). Он выдвинул совершенно абсурдную идею, заключавшуюся в том, что это есть "реликтовое" излучение, оставшееся после "Большого Взрыва", то есть от момента "рождения" Вселенной. Хотя из простой логики следует, что Вселенная есть всё, а значит, у нее нет ни начала, ни конца... Подробнее читайте в FAQ по эфирной физике.