Deadlocks Demo - بالعربي

About this video

فيما يلي ملخص النص باللغة العربية: - في الحلقة السابقة، تم مناقشة مشكلة الـ "Deadlock" وكيفية التعامل معها أو تقليل احتمالية حدوثها. - الكود المستخدم يحتوي على كلاس خاص باسم "Account" لتخزين بيانات الحسابات مثل الرصيد. - تم إنشاء دالة "transfer" لتحويل الأموال بين حسابين باستخدام آلية قفل (Lock) لضمان عدم حدوث تعارض أثناء التعديل على الرصيد. - عند استخدام عدة خيوط (Threads) للتحويل بين الحسابات، قد يحدث "Deadlock" إذا حاول كل خيط الحصول على أقفال بترتيب مختلف. - لحل مشكلة "Deadlock"، تم اقتراح عدة طرق: 1. استخدام متغير واحد فقط (مثل AtomicInteger) بدلاً من أقفال متعددة. 2. ترتيب الأقفال دائمًا بنفس الترتيب (مثل الترتيب الأبجدي لأسماء الحسابات). 3. استخدام محاولات الحصول على الأقفال بشكل مؤقت (Try Lock) وتجنب الانتظار الطويل إذا لم يتمكن الخيط من الحصول على القفل. - تم شرح كيفية تنفيذ كل طريقة وتأثيرها على الأداء والموارد. - الطريقة الثانية (ترتيب الأقفال) هي الأكثر شيوعًا لأنها تضمن أن جميع الخيوط تحصل على الأقفال بنفس الترتيب، مما يمنع "Deadlock". - الطريقة الثالثة (Try Lock) تضيف مرونة أكثر حيث يتم محاولة الحصول على القفل لفترة زمنية محددة، وإذا فشلت المحاولة، يتم إعادة المحاولة لاحقًا. - تم تقديم أمثلة عملية لتوضيح كيفية تنفيذ كل طريقة وكيفية التعامل مع السيناريوهات المختلفة. ختامًا، تم التأكيد على أهمية اختيار الطريقة المناسبة بناءً على متطلبات البرنامج وبيئة التشغيل.


Course: Concurrency Miniseries

Imported from YouTube playlist

View Full Course