جارٍ تحميل الدرس...
في نافذة الطباعة اختر «حفظ كملف PDF» كوجهة.
نظام التشغيل (1) - معمل الأسبوع السادس
تزامن الخيوط والاختناق في C#: الأقفال، والميوتكس، والمراقبات، والإشارات، ومشكلة الفلاسفة الآكلين
ALU).7 و5 و3 لا تشير إلى عدد الأنوية - بل تعكس الأداء الإجمالي للمعالج، بما في ذلك سرعة الساعة.i7 أسرع من i5، وهذه بدورها أسرع من i3.GHz - فمعالج بسرعة 3.2 جيجاهرتز ينفذ 3.2 مليار دورة في الثانية.C# التنفيذ المتوازي للكود عبر تعدد الخيوط (Multithreading).Tickets عدد التذاكر المتبقية للبيع.Thread 1 Thread 2
1. If (Tickets > 0)
2a. Register = Tickets
2b. Decrement register
2c. Tickets = register
3. Print "Tickets"
1. If (Tickets > 0)
2a. Register = Tickets
2b. Decrement register
2c. Tickets = register
3. Print "Tickets"Tickets = 6، ويحسب كلاهما Register = 5، ويطبع كلاهما 5 - فتباع التذكرة نفسها مرتين.Lock، وMutex، وMonitor، وSemaphore.LockMutexlock؛ يستخدم WaitOne() وReleaseMutex() للحصول عليه وتحريره.Monitormutex وlock، ويستخدم Monitor.Enter() وMonitor.Exit() للحصول عليه وتحريره.| النوع | السعة | الوصف |
|---|---|---|
| إشارة ثنائية (Binary Semaphore) | 1 | مماثلة وظيفيا لـ lock أو mutex أو monitor |
| إشارة عامة (General Semaphore) | أكبر من 1 | تسمح بعدة خيوط في آن واحد |
المنتج (Producer)
المخزن المؤقت
مكدس LIFO بسعة ثابتة
المستهلك (Consumer)
فيلسوف 1
فيلسوف 2
فيلسوف 3
فيلسوف 4
فيلسوف 5
Lock وMutex وMonitor وSemaphore هي الطرق القياسية الأربع لفرض ذلك في C#.Lock/Mutex/Monitor وصولا حصريا (خيط واحد في كل مرة)؛ بينما تسمح الإشارة العامة بعدد ثابت من الخيوط المتزامنة.Mahmoud Abas|نظام التشغيل 1 - معمل الأسبوع السادس (تزامن الخيوط والاستعصاء في C#)