الدرس 10: Mutex — حماية البيانات المشتركة
عندما تصل عدة threads إلى بيانات مشتركة دون مزامنة، يحدث race condition — وهو خلل يصعب إعادة إنتاجه وقد ينتج بيانات خاطئة. إن الـ mutex (Mutual Exclusion) هو الآلية الأساسية التي تحل هذه المشكلة.
الـ mutex يشبه مفتاح دورة المياه: فقط من يحمل المفتاح يمكنه الدخول. أما البقية فينتظرون بالخارج.
- mutex
- Mutual Exclusion — آلية مزامنة تسمح لـ thread واحد فقط بالاحتفاظ بالقفل في كل لحظة، وبذلك تحمي critical section.
- race condition
- حالة تعتمد فيها النتيجة على الترتيب غير المتوقع الذي تنفذ به threads العمليات. تسبب أخطاء يصعب إعادة إنتاجها.
- المقطع الحرج (critical section)
- مقطع من الكود يتم فيه الوصول إلى بيانات مشتركة؛ يجب حمايته بواسطة mutex لمنع race conditions.
- lock_guard
- غلاف RAII في C++ ينفذ lock في الـ constructor و unlock في الـ destructor، ويضمن تحرير القفل دائمًا حتى عند حدوث exceptions.
- deadlock
- حالة ينتظر فيها اثنان أو أكثر من الـ threads أن يحرر الآخر الـ mutex، ولا يستطيع أي منها التقدم.