Advanced C# Course 7- Multithreaded Applications
Advanced C Course
7- Multithreaded Applications
04132023 1149 PM 2
Outlines التشغيل نظم في مقدمة النياسب تعدد إلى نحتاج Multithreadingلماذا النياسب متعددة تطبيقات بإنشاء نقوم كيف
Multithreaded ( نيسب (Thread Terminatationإيقاف
الخلفية في تعمل التي BackgroundالنياسبThreads
Thread Class
04132023 1149 PM 3
التشغيل نظم في مقدمة المهمةProcess التنفيذ قيد برنامج هي الوقت بنفس برنامج من أكثر بتشغيل النظام يقوم كيف
المهام جدولة الزمنية الشرائح
Code Segment
Data Segment
Stack Segment
Heap Segment
04132023 1149 PM 4
التشغيل نظم في مقدمةالنيسب تعريف(Thread) برمجيمستقل مسلك عن عبارة هو
المكدس النياسبفي (Stack)في من غيره مع ويشتركأخرى (Heap)الكومة نريد بعبارة التي التعليمات من سياق هو
التوازي على تنفيذها األخرى التعليمات من غيرها مع
كل الحقيقة عن نيسبفي عبارة من + Stackهو مجموعةالخاصة البرنامج )السجالت عداد فيها ( PCبما
مهمةكل( Process )تحويThread األقل واحد على
المهام إدارة( Processes Management )التشغيل نظام مهمة من هي
النياسب إدارة المبرمج( Threads Management )أما مهمة من فهي
المهام وجدولة النياسب جدولة
04132023 1149 PM 5
النياسب تعدد إلى نحتاج لماذاMultithreading
( الخلفية في (Executing in Backgroundالتنفيذ العمل لتسريع مرة من اكثر مهمة إنجاز
نيسب من أكثر على العمل تقسيم يمكن معينة صورة لمعالجة برنامج أمثل تنفيذ استغاللا بنى ) للموارد وجود حال في (SMPلمتاحة
البرامج من محدد نوع لبناء الطبيعية الطريقة هو النياسب تعدد أنواعها بكافة المخدمات
04132023 1149 PM 6
النياسب متعددة تطبيقات بإنشاء نقوم كيفMultithreaded
( النيسب أن اآلن إلى يتم( Threadعلمنا التي التعليمات من مجموعة هوالبرنامج بقية مع التوازي على تنفيذها
مثل_ ت التعليمات ال Methodهذه هذا اسم تمرير إلى Methodيتم_سمى مندوبأو ) مفوض إلى( Delegateي تسليمه يتم المندوب وهذا
الصف من ThreadغرضDelegate نفس تحمل التي التوابع من مجموعة عن مفوض التوقيعهي
04132023 1149 PM 7
( نيسب (Thread Terminatationإيقاف عمله يتنهي ومتى النيسب إيقاف يتم كيف المنهج طريق عن قسري بشكل النيسب )( Abortإيقاف م_حبذة غير الطريقة هذه
04132023 1149 PM 8
الخلفية في تعمل التي Background النياسبThreads
( المهام من مجموعة يستعمل التشغيل الخلفية( Processesنظام في تعمل والتي(Background( )باسم ويندوز نظام في ( Windows Servicesوتسمىنظام ويندوز خدمات في _سمى LinuxUnixأما daemonsفت
األمام في تعمل التي المهام من أقل أفضلية لها يكون الخلفية في تعمل التي المهام يعمل معين نيسب نجعل أن يمكننا حيث النياسب على تطبيقها يمكن الفكرة نفس
الخلفية في( الخلفية في يعمل ما نيسب نجعل أن الخاصية( Backgroundيمكن طريق عن
IsBackground بالقيمة ضبطها يتم trueوالتي
( الخلفية النياسب أمامي( )Backgroundتنتهي نيسب أخر إنتهاء (forgroundعند
04132023 1149 PM 9
Thread Class الصنف نظام SystemThreadingThreadيمثل مستوى في نيسب
التشغيل الصنف في الموجود الخصائص Threadأهم
ϑ λ ϭϟ Δϳλ ΎΧϟ
ΩϳόΗ ϊ Οέϣ( Reference )ϰϟ Ώγϳϧϟ Ϋϔϧϣϟ Ύ˱ϳϟΎΣ CurrentThread
ΩϳόΗ true Ϋ ϥΎϛ Ώγϳϧϟ Ωϗ ΩΑ ϡϟϭ ϲϬΗϧϳ ΩόΑ IsAlive
ΩϳόΗ true Ϋ ϥΎϛ Ώγϳϧϟ ϝϣόϳ ϲϓ ΔϳϔϠΧϟ ISBackground
ΩϳόΗ ϭ ΩΩΣΗ( set or get )ϡγ Ώγϳϧϟ Name
ΩϳόΗ ϭ ΩΩΣΗ( set or get )ΔϳϠο ϓ Ώγϳϧϟ Priority
ΩϳόΗ ϭ ΩΩΣΗ( set or get )ΔϟΎΣ Ώγϳϧϟ ThreadState
04132023 1149 PM 10
Thread Class الصنف في الموجود المناهج Threadأهم
ϑ λ ϭϟ (ΔϘϳέρϟmethod) ΏγϳϧϟΫϳϔϧΗΑΫϳϔϧΗΑ ΩΑϟ Start
ϱέϭϓϝϛηΑΏγϳϧϟΫϳϔϧΗϲϬϧΗ Abort
ΔϟΎΣϲϓϥϭϛϳϱΫϟ Ώγϳϧϟϊ ρΎϘΗwaitSleepJoin Interrupt
ΫϳϔϧΗϲϬΗϧϳϰΗΣ )ΞϬϧϣϟΫϬϟϲϋΩΗγϣ˵ϟΏγϳϧϟ(ϥϳόϣΏγϳϧέΎυΗϧΏγϳϧϟΫϫ
Join
(ΓΩϭΩΣϣέϳ ΓέΗϔϟΏγϳϧϟϝϣϋ˯ΎΟέϏpause )-Εϗϣϑ ΎϘϳ - Suspend
(ϕΑΎγϟϊ ΑΎΗϟϝϣϋϝρΑΗSuspend) Resume
ΓΩΩΣϣΓέΗϔϟΏγϳϧϟ ϡϭϧΗ Sleep
04132023 1149 PM 11
النيسب Thread Statesحاالت ( التعداد ضمن موجودة وهي حاالت عدة أو حالة نيسب الم_سمى( EnumلكلThreadStateΔϣϳϘϟ ϒλϮϟ Running Ώγϳϧϟ ϝϣόϳ ϥϵ StopRequested Ώγϳϧϟ Ωϗ ϝΑϘΗγ ΓέΎη ϑ ΎϘϳ(Abort )SuspendRequested Ώγϳϧϟ Ωϗ ϝΑϘΗγ ΓέΎη ϑ ΎϘϳ Εϗϣ(pause )Background Ώγϳϧϟ ϝϣόϳ ϲϓ ΔϳϔϠΧϟ Unstarted Ώγϳϧϟ ϡΗ ϩΎηϧ ϥϛϟϭ ϡϟ ϡΗϳ ΫϳϔϧΗ ΞϬϧϣϟ Start)( Stopped Ώγϳϧϟ ϡΗ ϪϓΎϘϳ )ΕΎϣΐδϴϨϟ (ϲΎϬϧϞϜθΑ WaitSleepJoin Ώγϳϧϟ ˯ΎϋΩΗγϥο ϑ ϗϭΗϣwait ϭSleep ϭJoin Suspended Ώγϳϧϟ ϑ ϗϭΗϣ ϝϛηΑ Εϗϣ AbortRequested ϝϘϧΗϳ Ώγϳϧϟ ϰϟ ϩΫϫ ΔϟΎΣϟ ΎϣΩϧϋ ϥϭϛϧ Ωϗ ΎϧϳϋΩΗγ ΞϬϧϣϟ
Abort ΏγϳϧϠϟ ϥϛϟϭ Ϋϫ Ώγϳϧϟ ϡϟ ϝΑϘΗγϳ ΩόΑ ΓέΎη ϑ ΎϘϳϹ ϲΗϟϭ ϡΗϳ έϳΑόΗϟ ΎϬϧϋ ˯ΎϧΛΗγϹΎΑ( ThreadAbortException )ϱΫϟϭ ϲϬϧϳ ϝϣϋ Ϋϫ Ώγϳϧϟ
Aborted α ϔϧ ΔϟΎΣϟ ΔϘΑΎγϟ(AbortRequested) ϭ Ώγϳϧϟ Ωϗ ϑ ϗϭΗ(ΕΎϣ )ϥϛϟϭ ϪΗΎΣ ϡϟ έϳϐΗΗ ϰϟ ΔϟΎΣϟ Stopped
04132023 1149 PM 12
Thread Priority ) ( نفس في معه تشترك التي النياسب من لغيره بالنسبة أولوية أفضلية نيسب لكل
(Processالمهمة ) بأفضلية النياسب جميع إنشاء Normalيتم
ϑ λ ϭϟ ΔϣϳϘϟ
ΎϳϠόϟΔϳϠο ϓϷϪϟΏγϳϧϟ Highest
ϱΩΎόϟΏγϳϧϟϥϣϰϠϋΔϳϠο ϓϪϟΏγϳϧϟ AboveNormal
ΔϳΩΎϋΔϳϠο ϓϪϟΏγϳϧϟ Normal
ϱΩΎόϟΏγϳϧϟϥϣϰϧΩΔϳϠο ϓϪϟΏγϳϧϟ BelowNormal
ϪϟΏγϳϧϟϷΔϳϠο ϓΎϳϧΩϟ Lowest
04132023 1149 PM 13
الموارد على التنافسConcurrency
النياسب التطبيقات ذات ( Multithreaded Application)متعددة p جدا عظيمة فوائد
p أبدا p سهال p أمرا ليس النياسب إدارة ستكون النتائج فإن الذاكرة في مشترك غرض على العمل نيسبان حاول إذا
خاطئة الموارد على التنافس مشاكل لحل أساسين مفهومين على التعرف يجب
الحرجة المقاطع( Critical Sections )(القفلLock ) دخول لتحقيق طريقة واحد نيسبوهي الحرج المقطع إلى
مالحظات
) نحتاج ) التي الشيفرة الكود من جزء أصغر نقفل بحيث القفل استعمال عند الحذر علينا يجبالبرنامج ضمن حمايته إلى
المهام نطاق على ولكن التشغيل نظام قبل من ومطبقة موجودة هي األفكار هذه(Processes )النياسب نطاق على وسنراها
04132023 1149 PM 14
الحرجة المقاطع استخداموالقفل
Lock
read value from DB update value in RAMwriting value to DB
04132023 1149 PM 15
الحرجة المقاطع استخداموالقفل
Static int [] arr=new int [10]
Static int index++ if (indexgt=10) return ConsoleWriteLine(arr[index])
04132023 1149 PM 16
النياسب بين ThreadsالتزامنSynchronization
هما لسببين النياسب بين المزامنة إلى نحتاجمشتركة موارد استخدامالتواقت(Concurrency)
Thread B Globalx=4
Thread A
Globalx=3
call function
Func(Globalx )
04132023 1149 PM 17
التزامن SynchronizationتحقيقImplementation
من مال سحب بعمليات والقيام مصرفي حساب على نيسب من أكثر ولوج مسألةالرصيد
المثال بعرض تزامن سنقوم دون من تزامن مرة مع مرة و ( في تكون النياسب وبقية الغرض على قفل يضع الحرج المقطع إلى يدخل ما لحظة في واحد نيسب فقط
(انتظارحالة ( الحرج المقطع كامل تنفيذ من النيسب هذ ينتهي أن كاملة بعد مناقلة يمثل بتحريريقوم( والذي
القفل التشغيل نظام يقوم النياسب ثم أحد إنتظار بإختيار حالة في التي الحرج المقطع في للدخول
04132023 1149 PM 18
التزامن Synchronization Classesأصناف الصفInterlocked ( مناهج على الصنف هذه آمنة (methodيحتوي
(Safe ) العمليات اآلمنةلتقديم نياسب عدة بين المشتركة المتحوالت على هي المناهج أن( atomic )ذريةهذه عن المنهجأي عبارة مناقلةهو
(Transaction ) كامل بشكل تتم أن مقاطعة فإما المعالج دون من W أبدا تتم ال أن أو
المناهج هذه من
Increment - Decrement Exchange القديمة )األصليةالقيمة ويعيد متحولفي قيمةيضع للمتحول( CompareExchange
04132023 1149 PM 19
Parallel Programming Example من األعداد بجمع pولدينا n 1جمع نيسب كل يقوم حيث نيسب
من np 1األعداد
04132023 1149 PM 20
Semaphore Class المهام بين التزامن لتحقيق طريقة عن عبارة هو السيمافور )Processes (يمكن التشغيل نظام مستوى في p لتحقيق استعماله أيضا
النياسب بين التزامن
مثل رقم عن عبارة_ مورد على الحصول تستطيع التي النياسب من محدود عدد ي من أكثر ق[بل من عليها التنافس يتم التي الموارد من( Pool)حوض (أو مشترك)نيسب
الطابعة مثال
هامة عدد مالحظة هي السيمافور الصفر قيمة يساوي أو عن أكبر عددويعبرأن النياسب تستطيع إنتظار الموردعلى تحصلالتي دون من و مباشرة
04132023 1149 PM 21
Mutex Class (Mutual Exclusion)( الصف هذا بسيطة( Mutexيعطي يسمح للتزامنطريقة لنيسب بحيث
مع واحد الحرج المقطع إلى البقية بالدخول في ) إستبعاد تبقى النياسب بقيةالنيسب هذا يقوم أن إلى إنتظار ال حالة ( Mutexبتحرير
ال ( Lock - unlockآلية )Mutex يستعمل
04132023 1149 PM 22
اإلقفال حدوث تتجنب أن يمكن كيفبرنامجك( Deadlockالمتبادل) شيفرة في
نيسبين بين يحدث) Two Threads (إلى بحاجة النيسبين من كل عندما عمله يكمل حتى األخر من معطيات
عتبر من أعقد المشاكل التي واجهت مصمي نظم التشغيلWهذه المشكلة تالمهام على حلها تم مستوى على حلها لكن و (Processes)مستوى
المبرمج مسؤولية من هي(Threads)النياسب
المشكلة هذه تنتج الحقيقة في)DeadLock (األقفال إستخدام عن Locks ال إستخدام وعن Mutexp أيضا
مفرغة حلقات فيها تحدث ال بحيث النياسب متعددة تطبيقات تصميم iجدا الصعب من(DeadLocks)
04132023 1149 PM 23
Monitor Class( كائن واحد قفلNETفي( objectلكل نيسب قبل من عليه الحصول يتم الصفMonitor التالية المزايا يمللك
على- 1 الحصول ويتم بغرض الطلب( Monitor)المراقبمرتبطة عند2 الكود- ضمن مكان أي في استدعائه يمكن أي مقيد غيرالصنف- 3 هذا من غرض إنشاء يمكن ال
) نيسب ) من أكثر من إليه الوصول يتم غرضمتزامن كل أجل من القفل يملك وحيد نيسب( جاهزية لكي (Ready Queueرتل المعالج يختارها أن تنتظر التي النياسب يحوي
النياسب بقية استبعاد مع القفل على تحصل( إنتظار (Waiting Queueرتل إيقاظ إنتظارإشارة حالة في التي النياسب يحوي
القفل على الحصول لتستعيد أخر نيسب من
04132023 1149 PM 24
Monitor Class
04132023 1149 PM 25
Producer Consumere Example
04132023 1149 PM 2
Outlines التشغيل نظم في مقدمة النياسب تعدد إلى نحتاج Multithreadingلماذا النياسب متعددة تطبيقات بإنشاء نقوم كيف
Multithreaded ( نيسب (Thread Terminatationإيقاف
الخلفية في تعمل التي BackgroundالنياسبThreads
Thread Class
04132023 1149 PM 3
التشغيل نظم في مقدمة المهمةProcess التنفيذ قيد برنامج هي الوقت بنفس برنامج من أكثر بتشغيل النظام يقوم كيف
المهام جدولة الزمنية الشرائح
Code Segment
Data Segment
Stack Segment
Heap Segment
04132023 1149 PM 4
التشغيل نظم في مقدمةالنيسب تعريف(Thread) برمجيمستقل مسلك عن عبارة هو
المكدس النياسبفي (Stack)في من غيره مع ويشتركأخرى (Heap)الكومة نريد بعبارة التي التعليمات من سياق هو
التوازي على تنفيذها األخرى التعليمات من غيرها مع
كل الحقيقة عن نيسبفي عبارة من + Stackهو مجموعةالخاصة البرنامج )السجالت عداد فيها ( PCبما
مهمةكل( Process )تحويThread األقل واحد على
المهام إدارة( Processes Management )التشغيل نظام مهمة من هي
النياسب إدارة المبرمج( Threads Management )أما مهمة من فهي
المهام وجدولة النياسب جدولة
04132023 1149 PM 5
النياسب تعدد إلى نحتاج لماذاMultithreading
( الخلفية في (Executing in Backgroundالتنفيذ العمل لتسريع مرة من اكثر مهمة إنجاز
نيسب من أكثر على العمل تقسيم يمكن معينة صورة لمعالجة برنامج أمثل تنفيذ استغاللا بنى ) للموارد وجود حال في (SMPلمتاحة
البرامج من محدد نوع لبناء الطبيعية الطريقة هو النياسب تعدد أنواعها بكافة المخدمات
04132023 1149 PM 6
النياسب متعددة تطبيقات بإنشاء نقوم كيفMultithreaded
( النيسب أن اآلن إلى يتم( Threadعلمنا التي التعليمات من مجموعة هوالبرنامج بقية مع التوازي على تنفيذها
مثل_ ت التعليمات ال Methodهذه هذا اسم تمرير إلى Methodيتم_سمى مندوبأو ) مفوض إلى( Delegateي تسليمه يتم المندوب وهذا
الصف من ThreadغرضDelegate نفس تحمل التي التوابع من مجموعة عن مفوض التوقيعهي
04132023 1149 PM 7
( نيسب (Thread Terminatationإيقاف عمله يتنهي ومتى النيسب إيقاف يتم كيف المنهج طريق عن قسري بشكل النيسب )( Abortإيقاف م_حبذة غير الطريقة هذه
04132023 1149 PM 8
الخلفية في تعمل التي Background النياسبThreads
( المهام من مجموعة يستعمل التشغيل الخلفية( Processesنظام في تعمل والتي(Background( )باسم ويندوز نظام في ( Windows Servicesوتسمىنظام ويندوز خدمات في _سمى LinuxUnixأما daemonsفت
األمام في تعمل التي المهام من أقل أفضلية لها يكون الخلفية في تعمل التي المهام يعمل معين نيسب نجعل أن يمكننا حيث النياسب على تطبيقها يمكن الفكرة نفس
الخلفية في( الخلفية في يعمل ما نيسب نجعل أن الخاصية( Backgroundيمكن طريق عن
IsBackground بالقيمة ضبطها يتم trueوالتي
( الخلفية النياسب أمامي( )Backgroundتنتهي نيسب أخر إنتهاء (forgroundعند
04132023 1149 PM 9
Thread Class الصنف نظام SystemThreadingThreadيمثل مستوى في نيسب
التشغيل الصنف في الموجود الخصائص Threadأهم
ϑ λ ϭϟ Δϳλ ΎΧϟ
ΩϳόΗ ϊ Οέϣ( Reference )ϰϟ Ώγϳϧϟ Ϋϔϧϣϟ Ύ˱ϳϟΎΣ CurrentThread
ΩϳόΗ true Ϋ ϥΎϛ Ώγϳϧϟ Ωϗ ΩΑ ϡϟϭ ϲϬΗϧϳ ΩόΑ IsAlive
ΩϳόΗ true Ϋ ϥΎϛ Ώγϳϧϟ ϝϣόϳ ϲϓ ΔϳϔϠΧϟ ISBackground
ΩϳόΗ ϭ ΩΩΣΗ( set or get )ϡγ Ώγϳϧϟ Name
ΩϳόΗ ϭ ΩΩΣΗ( set or get )ΔϳϠο ϓ Ώγϳϧϟ Priority
ΩϳόΗ ϭ ΩΩΣΗ( set or get )ΔϟΎΣ Ώγϳϧϟ ThreadState
04132023 1149 PM 10
Thread Class الصنف في الموجود المناهج Threadأهم
ϑ λ ϭϟ (ΔϘϳέρϟmethod) ΏγϳϧϟΫϳϔϧΗΑΫϳϔϧΗΑ ΩΑϟ Start
ϱέϭϓϝϛηΑΏγϳϧϟΫϳϔϧΗϲϬϧΗ Abort
ΔϟΎΣϲϓϥϭϛϳϱΫϟ Ώγϳϧϟϊ ρΎϘΗwaitSleepJoin Interrupt
ΫϳϔϧΗϲϬΗϧϳϰΗΣ )ΞϬϧϣϟΫϬϟϲϋΩΗγϣ˵ϟΏγϳϧϟ(ϥϳόϣΏγϳϧέΎυΗϧΏγϳϧϟΫϫ
Join
(ΓΩϭΩΣϣέϳ ΓέΗϔϟΏγϳϧϟϝϣϋ˯ΎΟέϏpause )-Εϗϣϑ ΎϘϳ - Suspend
(ϕΑΎγϟϊ ΑΎΗϟϝϣϋϝρΑΗSuspend) Resume
ΓΩΩΣϣΓέΗϔϟΏγϳϧϟ ϡϭϧΗ Sleep
04132023 1149 PM 11
النيسب Thread Statesحاالت ( التعداد ضمن موجودة وهي حاالت عدة أو حالة نيسب الم_سمى( EnumلكلThreadStateΔϣϳϘϟ ϒλϮϟ Running Ώγϳϧϟ ϝϣόϳ ϥϵ StopRequested Ώγϳϧϟ Ωϗ ϝΑϘΗγ ΓέΎη ϑ ΎϘϳ(Abort )SuspendRequested Ώγϳϧϟ Ωϗ ϝΑϘΗγ ΓέΎη ϑ ΎϘϳ Εϗϣ(pause )Background Ώγϳϧϟ ϝϣόϳ ϲϓ ΔϳϔϠΧϟ Unstarted Ώγϳϧϟ ϡΗ ϩΎηϧ ϥϛϟϭ ϡϟ ϡΗϳ ΫϳϔϧΗ ΞϬϧϣϟ Start)( Stopped Ώγϳϧϟ ϡΗ ϪϓΎϘϳ )ΕΎϣΐδϴϨϟ (ϲΎϬϧϞϜθΑ WaitSleepJoin Ώγϳϧϟ ˯ΎϋΩΗγϥο ϑ ϗϭΗϣwait ϭSleep ϭJoin Suspended Ώγϳϧϟ ϑ ϗϭΗϣ ϝϛηΑ Εϗϣ AbortRequested ϝϘϧΗϳ Ώγϳϧϟ ϰϟ ϩΫϫ ΔϟΎΣϟ ΎϣΩϧϋ ϥϭϛϧ Ωϗ ΎϧϳϋΩΗγ ΞϬϧϣϟ
Abort ΏγϳϧϠϟ ϥϛϟϭ Ϋϫ Ώγϳϧϟ ϡϟ ϝΑϘΗγϳ ΩόΑ ΓέΎη ϑ ΎϘϳϹ ϲΗϟϭ ϡΗϳ έϳΑόΗϟ ΎϬϧϋ ˯ΎϧΛΗγϹΎΑ( ThreadAbortException )ϱΫϟϭ ϲϬϧϳ ϝϣϋ Ϋϫ Ώγϳϧϟ
Aborted α ϔϧ ΔϟΎΣϟ ΔϘΑΎγϟ(AbortRequested) ϭ Ώγϳϧϟ Ωϗ ϑ ϗϭΗ(ΕΎϣ )ϥϛϟϭ ϪΗΎΣ ϡϟ έϳϐΗΗ ϰϟ ΔϟΎΣϟ Stopped
04132023 1149 PM 12
Thread Priority ) ( نفس في معه تشترك التي النياسب من لغيره بالنسبة أولوية أفضلية نيسب لكل
(Processالمهمة ) بأفضلية النياسب جميع إنشاء Normalيتم
ϑ λ ϭϟ ΔϣϳϘϟ
ΎϳϠόϟΔϳϠο ϓϷϪϟΏγϳϧϟ Highest
ϱΩΎόϟΏγϳϧϟϥϣϰϠϋΔϳϠο ϓϪϟΏγϳϧϟ AboveNormal
ΔϳΩΎϋΔϳϠο ϓϪϟΏγϳϧϟ Normal
ϱΩΎόϟΏγϳϧϟϥϣϰϧΩΔϳϠο ϓϪϟΏγϳϧϟ BelowNormal
ϪϟΏγϳϧϟϷΔϳϠο ϓΎϳϧΩϟ Lowest
04132023 1149 PM 13
الموارد على التنافسConcurrency
النياسب التطبيقات ذات ( Multithreaded Application)متعددة p جدا عظيمة فوائد
p أبدا p سهال p أمرا ليس النياسب إدارة ستكون النتائج فإن الذاكرة في مشترك غرض على العمل نيسبان حاول إذا
خاطئة الموارد على التنافس مشاكل لحل أساسين مفهومين على التعرف يجب
الحرجة المقاطع( Critical Sections )(القفلLock ) دخول لتحقيق طريقة واحد نيسبوهي الحرج المقطع إلى
مالحظات
) نحتاج ) التي الشيفرة الكود من جزء أصغر نقفل بحيث القفل استعمال عند الحذر علينا يجبالبرنامج ضمن حمايته إلى
المهام نطاق على ولكن التشغيل نظام قبل من ومطبقة موجودة هي األفكار هذه(Processes )النياسب نطاق على وسنراها
04132023 1149 PM 14
الحرجة المقاطع استخداموالقفل
Lock
read value from DB update value in RAMwriting value to DB
04132023 1149 PM 15
الحرجة المقاطع استخداموالقفل
Static int [] arr=new int [10]
Static int index++ if (indexgt=10) return ConsoleWriteLine(arr[index])
04132023 1149 PM 16
النياسب بين ThreadsالتزامنSynchronization
هما لسببين النياسب بين المزامنة إلى نحتاجمشتركة موارد استخدامالتواقت(Concurrency)
Thread B Globalx=4
Thread A
Globalx=3
call function
Func(Globalx )
04132023 1149 PM 17
التزامن SynchronizationتحقيقImplementation
من مال سحب بعمليات والقيام مصرفي حساب على نيسب من أكثر ولوج مسألةالرصيد
المثال بعرض تزامن سنقوم دون من تزامن مرة مع مرة و ( في تكون النياسب وبقية الغرض على قفل يضع الحرج المقطع إلى يدخل ما لحظة في واحد نيسب فقط
(انتظارحالة ( الحرج المقطع كامل تنفيذ من النيسب هذ ينتهي أن كاملة بعد مناقلة يمثل بتحريريقوم( والذي
القفل التشغيل نظام يقوم النياسب ثم أحد إنتظار بإختيار حالة في التي الحرج المقطع في للدخول
04132023 1149 PM 18
التزامن Synchronization Classesأصناف الصفInterlocked ( مناهج على الصنف هذه آمنة (methodيحتوي
(Safe ) العمليات اآلمنةلتقديم نياسب عدة بين المشتركة المتحوالت على هي المناهج أن( atomic )ذريةهذه عن المنهجأي عبارة مناقلةهو
(Transaction ) كامل بشكل تتم أن مقاطعة فإما المعالج دون من W أبدا تتم ال أن أو
المناهج هذه من
Increment - Decrement Exchange القديمة )األصليةالقيمة ويعيد متحولفي قيمةيضع للمتحول( CompareExchange
04132023 1149 PM 19
Parallel Programming Example من األعداد بجمع pولدينا n 1جمع نيسب كل يقوم حيث نيسب
من np 1األعداد
04132023 1149 PM 20
Semaphore Class المهام بين التزامن لتحقيق طريقة عن عبارة هو السيمافور )Processes (يمكن التشغيل نظام مستوى في p لتحقيق استعماله أيضا
النياسب بين التزامن
مثل رقم عن عبارة_ مورد على الحصول تستطيع التي النياسب من محدود عدد ي من أكثر ق[بل من عليها التنافس يتم التي الموارد من( Pool)حوض (أو مشترك)نيسب
الطابعة مثال
هامة عدد مالحظة هي السيمافور الصفر قيمة يساوي أو عن أكبر عددويعبرأن النياسب تستطيع إنتظار الموردعلى تحصلالتي دون من و مباشرة
04132023 1149 PM 21
Mutex Class (Mutual Exclusion)( الصف هذا بسيطة( Mutexيعطي يسمح للتزامنطريقة لنيسب بحيث
مع واحد الحرج المقطع إلى البقية بالدخول في ) إستبعاد تبقى النياسب بقيةالنيسب هذا يقوم أن إلى إنتظار ال حالة ( Mutexبتحرير
ال ( Lock - unlockآلية )Mutex يستعمل
04132023 1149 PM 22
اإلقفال حدوث تتجنب أن يمكن كيفبرنامجك( Deadlockالمتبادل) شيفرة في
نيسبين بين يحدث) Two Threads (إلى بحاجة النيسبين من كل عندما عمله يكمل حتى األخر من معطيات
عتبر من أعقد المشاكل التي واجهت مصمي نظم التشغيلWهذه المشكلة تالمهام على حلها تم مستوى على حلها لكن و (Processes)مستوى
المبرمج مسؤولية من هي(Threads)النياسب
المشكلة هذه تنتج الحقيقة في)DeadLock (األقفال إستخدام عن Locks ال إستخدام وعن Mutexp أيضا
مفرغة حلقات فيها تحدث ال بحيث النياسب متعددة تطبيقات تصميم iجدا الصعب من(DeadLocks)
04132023 1149 PM 23
Monitor Class( كائن واحد قفلNETفي( objectلكل نيسب قبل من عليه الحصول يتم الصفMonitor التالية المزايا يمللك
على- 1 الحصول ويتم بغرض الطلب( Monitor)المراقبمرتبطة عند2 الكود- ضمن مكان أي في استدعائه يمكن أي مقيد غيرالصنف- 3 هذا من غرض إنشاء يمكن ال
) نيسب ) من أكثر من إليه الوصول يتم غرضمتزامن كل أجل من القفل يملك وحيد نيسب( جاهزية لكي (Ready Queueرتل المعالج يختارها أن تنتظر التي النياسب يحوي
النياسب بقية استبعاد مع القفل على تحصل( إنتظار (Waiting Queueرتل إيقاظ إنتظارإشارة حالة في التي النياسب يحوي
القفل على الحصول لتستعيد أخر نيسب من
04132023 1149 PM 24
Monitor Class
04132023 1149 PM 25
Producer Consumere Example
04132023 1149 PM 3
التشغيل نظم في مقدمة المهمةProcess التنفيذ قيد برنامج هي الوقت بنفس برنامج من أكثر بتشغيل النظام يقوم كيف
المهام جدولة الزمنية الشرائح
Code Segment
Data Segment
Stack Segment
Heap Segment
04132023 1149 PM 4
التشغيل نظم في مقدمةالنيسب تعريف(Thread) برمجيمستقل مسلك عن عبارة هو
المكدس النياسبفي (Stack)في من غيره مع ويشتركأخرى (Heap)الكومة نريد بعبارة التي التعليمات من سياق هو
التوازي على تنفيذها األخرى التعليمات من غيرها مع
كل الحقيقة عن نيسبفي عبارة من + Stackهو مجموعةالخاصة البرنامج )السجالت عداد فيها ( PCبما
مهمةكل( Process )تحويThread األقل واحد على
المهام إدارة( Processes Management )التشغيل نظام مهمة من هي
النياسب إدارة المبرمج( Threads Management )أما مهمة من فهي
المهام وجدولة النياسب جدولة
04132023 1149 PM 5
النياسب تعدد إلى نحتاج لماذاMultithreading
( الخلفية في (Executing in Backgroundالتنفيذ العمل لتسريع مرة من اكثر مهمة إنجاز
نيسب من أكثر على العمل تقسيم يمكن معينة صورة لمعالجة برنامج أمثل تنفيذ استغاللا بنى ) للموارد وجود حال في (SMPلمتاحة
البرامج من محدد نوع لبناء الطبيعية الطريقة هو النياسب تعدد أنواعها بكافة المخدمات
04132023 1149 PM 6
النياسب متعددة تطبيقات بإنشاء نقوم كيفMultithreaded
( النيسب أن اآلن إلى يتم( Threadعلمنا التي التعليمات من مجموعة هوالبرنامج بقية مع التوازي على تنفيذها
مثل_ ت التعليمات ال Methodهذه هذا اسم تمرير إلى Methodيتم_سمى مندوبأو ) مفوض إلى( Delegateي تسليمه يتم المندوب وهذا
الصف من ThreadغرضDelegate نفس تحمل التي التوابع من مجموعة عن مفوض التوقيعهي
04132023 1149 PM 7
( نيسب (Thread Terminatationإيقاف عمله يتنهي ومتى النيسب إيقاف يتم كيف المنهج طريق عن قسري بشكل النيسب )( Abortإيقاف م_حبذة غير الطريقة هذه
04132023 1149 PM 8
الخلفية في تعمل التي Background النياسبThreads
( المهام من مجموعة يستعمل التشغيل الخلفية( Processesنظام في تعمل والتي(Background( )باسم ويندوز نظام في ( Windows Servicesوتسمىنظام ويندوز خدمات في _سمى LinuxUnixأما daemonsفت
األمام في تعمل التي المهام من أقل أفضلية لها يكون الخلفية في تعمل التي المهام يعمل معين نيسب نجعل أن يمكننا حيث النياسب على تطبيقها يمكن الفكرة نفس
الخلفية في( الخلفية في يعمل ما نيسب نجعل أن الخاصية( Backgroundيمكن طريق عن
IsBackground بالقيمة ضبطها يتم trueوالتي
( الخلفية النياسب أمامي( )Backgroundتنتهي نيسب أخر إنتهاء (forgroundعند
04132023 1149 PM 9
Thread Class الصنف نظام SystemThreadingThreadيمثل مستوى في نيسب
التشغيل الصنف في الموجود الخصائص Threadأهم
ϑ λ ϭϟ Δϳλ ΎΧϟ
ΩϳόΗ ϊ Οέϣ( Reference )ϰϟ Ώγϳϧϟ Ϋϔϧϣϟ Ύ˱ϳϟΎΣ CurrentThread
ΩϳόΗ true Ϋ ϥΎϛ Ώγϳϧϟ Ωϗ ΩΑ ϡϟϭ ϲϬΗϧϳ ΩόΑ IsAlive
ΩϳόΗ true Ϋ ϥΎϛ Ώγϳϧϟ ϝϣόϳ ϲϓ ΔϳϔϠΧϟ ISBackground
ΩϳόΗ ϭ ΩΩΣΗ( set or get )ϡγ Ώγϳϧϟ Name
ΩϳόΗ ϭ ΩΩΣΗ( set or get )ΔϳϠο ϓ Ώγϳϧϟ Priority
ΩϳόΗ ϭ ΩΩΣΗ( set or get )ΔϟΎΣ Ώγϳϧϟ ThreadState
04132023 1149 PM 10
Thread Class الصنف في الموجود المناهج Threadأهم
ϑ λ ϭϟ (ΔϘϳέρϟmethod) ΏγϳϧϟΫϳϔϧΗΑΫϳϔϧΗΑ ΩΑϟ Start
ϱέϭϓϝϛηΑΏγϳϧϟΫϳϔϧΗϲϬϧΗ Abort
ΔϟΎΣϲϓϥϭϛϳϱΫϟ Ώγϳϧϟϊ ρΎϘΗwaitSleepJoin Interrupt
ΫϳϔϧΗϲϬΗϧϳϰΗΣ )ΞϬϧϣϟΫϬϟϲϋΩΗγϣ˵ϟΏγϳϧϟ(ϥϳόϣΏγϳϧέΎυΗϧΏγϳϧϟΫϫ
Join
(ΓΩϭΩΣϣέϳ ΓέΗϔϟΏγϳϧϟϝϣϋ˯ΎΟέϏpause )-Εϗϣϑ ΎϘϳ - Suspend
(ϕΑΎγϟϊ ΑΎΗϟϝϣϋϝρΑΗSuspend) Resume
ΓΩΩΣϣΓέΗϔϟΏγϳϧϟ ϡϭϧΗ Sleep
04132023 1149 PM 11
النيسب Thread Statesحاالت ( التعداد ضمن موجودة وهي حاالت عدة أو حالة نيسب الم_سمى( EnumلكلThreadStateΔϣϳϘϟ ϒλϮϟ Running Ώγϳϧϟ ϝϣόϳ ϥϵ StopRequested Ώγϳϧϟ Ωϗ ϝΑϘΗγ ΓέΎη ϑ ΎϘϳ(Abort )SuspendRequested Ώγϳϧϟ Ωϗ ϝΑϘΗγ ΓέΎη ϑ ΎϘϳ Εϗϣ(pause )Background Ώγϳϧϟ ϝϣόϳ ϲϓ ΔϳϔϠΧϟ Unstarted Ώγϳϧϟ ϡΗ ϩΎηϧ ϥϛϟϭ ϡϟ ϡΗϳ ΫϳϔϧΗ ΞϬϧϣϟ Start)( Stopped Ώγϳϧϟ ϡΗ ϪϓΎϘϳ )ΕΎϣΐδϴϨϟ (ϲΎϬϧϞϜθΑ WaitSleepJoin Ώγϳϧϟ ˯ΎϋΩΗγϥο ϑ ϗϭΗϣwait ϭSleep ϭJoin Suspended Ώγϳϧϟ ϑ ϗϭΗϣ ϝϛηΑ Εϗϣ AbortRequested ϝϘϧΗϳ Ώγϳϧϟ ϰϟ ϩΫϫ ΔϟΎΣϟ ΎϣΩϧϋ ϥϭϛϧ Ωϗ ΎϧϳϋΩΗγ ΞϬϧϣϟ
Abort ΏγϳϧϠϟ ϥϛϟϭ Ϋϫ Ώγϳϧϟ ϡϟ ϝΑϘΗγϳ ΩόΑ ΓέΎη ϑ ΎϘϳϹ ϲΗϟϭ ϡΗϳ έϳΑόΗϟ ΎϬϧϋ ˯ΎϧΛΗγϹΎΑ( ThreadAbortException )ϱΫϟϭ ϲϬϧϳ ϝϣϋ Ϋϫ Ώγϳϧϟ
Aborted α ϔϧ ΔϟΎΣϟ ΔϘΑΎγϟ(AbortRequested) ϭ Ώγϳϧϟ Ωϗ ϑ ϗϭΗ(ΕΎϣ )ϥϛϟϭ ϪΗΎΣ ϡϟ έϳϐΗΗ ϰϟ ΔϟΎΣϟ Stopped
04132023 1149 PM 12
Thread Priority ) ( نفس في معه تشترك التي النياسب من لغيره بالنسبة أولوية أفضلية نيسب لكل
(Processالمهمة ) بأفضلية النياسب جميع إنشاء Normalيتم
ϑ λ ϭϟ ΔϣϳϘϟ
ΎϳϠόϟΔϳϠο ϓϷϪϟΏγϳϧϟ Highest
ϱΩΎόϟΏγϳϧϟϥϣϰϠϋΔϳϠο ϓϪϟΏγϳϧϟ AboveNormal
ΔϳΩΎϋΔϳϠο ϓϪϟΏγϳϧϟ Normal
ϱΩΎόϟΏγϳϧϟϥϣϰϧΩΔϳϠο ϓϪϟΏγϳϧϟ BelowNormal
ϪϟΏγϳϧϟϷΔϳϠο ϓΎϳϧΩϟ Lowest
04132023 1149 PM 13
الموارد على التنافسConcurrency
النياسب التطبيقات ذات ( Multithreaded Application)متعددة p جدا عظيمة فوائد
p أبدا p سهال p أمرا ليس النياسب إدارة ستكون النتائج فإن الذاكرة في مشترك غرض على العمل نيسبان حاول إذا
خاطئة الموارد على التنافس مشاكل لحل أساسين مفهومين على التعرف يجب
الحرجة المقاطع( Critical Sections )(القفلLock ) دخول لتحقيق طريقة واحد نيسبوهي الحرج المقطع إلى
مالحظات
) نحتاج ) التي الشيفرة الكود من جزء أصغر نقفل بحيث القفل استعمال عند الحذر علينا يجبالبرنامج ضمن حمايته إلى
المهام نطاق على ولكن التشغيل نظام قبل من ومطبقة موجودة هي األفكار هذه(Processes )النياسب نطاق على وسنراها
04132023 1149 PM 14
الحرجة المقاطع استخداموالقفل
Lock
read value from DB update value in RAMwriting value to DB
04132023 1149 PM 15
الحرجة المقاطع استخداموالقفل
Static int [] arr=new int [10]
Static int index++ if (indexgt=10) return ConsoleWriteLine(arr[index])
04132023 1149 PM 16
النياسب بين ThreadsالتزامنSynchronization
هما لسببين النياسب بين المزامنة إلى نحتاجمشتركة موارد استخدامالتواقت(Concurrency)
Thread B Globalx=4
Thread A
Globalx=3
call function
Func(Globalx )
04132023 1149 PM 17
التزامن SynchronizationتحقيقImplementation
من مال سحب بعمليات والقيام مصرفي حساب على نيسب من أكثر ولوج مسألةالرصيد
المثال بعرض تزامن سنقوم دون من تزامن مرة مع مرة و ( في تكون النياسب وبقية الغرض على قفل يضع الحرج المقطع إلى يدخل ما لحظة في واحد نيسب فقط
(انتظارحالة ( الحرج المقطع كامل تنفيذ من النيسب هذ ينتهي أن كاملة بعد مناقلة يمثل بتحريريقوم( والذي
القفل التشغيل نظام يقوم النياسب ثم أحد إنتظار بإختيار حالة في التي الحرج المقطع في للدخول
04132023 1149 PM 18
التزامن Synchronization Classesأصناف الصفInterlocked ( مناهج على الصنف هذه آمنة (methodيحتوي
(Safe ) العمليات اآلمنةلتقديم نياسب عدة بين المشتركة المتحوالت على هي المناهج أن( atomic )ذريةهذه عن المنهجأي عبارة مناقلةهو
(Transaction ) كامل بشكل تتم أن مقاطعة فإما المعالج دون من W أبدا تتم ال أن أو
المناهج هذه من
Increment - Decrement Exchange القديمة )األصليةالقيمة ويعيد متحولفي قيمةيضع للمتحول( CompareExchange
04132023 1149 PM 19
Parallel Programming Example من األعداد بجمع pولدينا n 1جمع نيسب كل يقوم حيث نيسب
من np 1األعداد
04132023 1149 PM 20
Semaphore Class المهام بين التزامن لتحقيق طريقة عن عبارة هو السيمافور )Processes (يمكن التشغيل نظام مستوى في p لتحقيق استعماله أيضا
النياسب بين التزامن
مثل رقم عن عبارة_ مورد على الحصول تستطيع التي النياسب من محدود عدد ي من أكثر ق[بل من عليها التنافس يتم التي الموارد من( Pool)حوض (أو مشترك)نيسب
الطابعة مثال
هامة عدد مالحظة هي السيمافور الصفر قيمة يساوي أو عن أكبر عددويعبرأن النياسب تستطيع إنتظار الموردعلى تحصلالتي دون من و مباشرة
04132023 1149 PM 21
Mutex Class (Mutual Exclusion)( الصف هذا بسيطة( Mutexيعطي يسمح للتزامنطريقة لنيسب بحيث
مع واحد الحرج المقطع إلى البقية بالدخول في ) إستبعاد تبقى النياسب بقيةالنيسب هذا يقوم أن إلى إنتظار ال حالة ( Mutexبتحرير
ال ( Lock - unlockآلية )Mutex يستعمل
04132023 1149 PM 22
اإلقفال حدوث تتجنب أن يمكن كيفبرنامجك( Deadlockالمتبادل) شيفرة في
نيسبين بين يحدث) Two Threads (إلى بحاجة النيسبين من كل عندما عمله يكمل حتى األخر من معطيات
عتبر من أعقد المشاكل التي واجهت مصمي نظم التشغيلWهذه المشكلة تالمهام على حلها تم مستوى على حلها لكن و (Processes)مستوى
المبرمج مسؤولية من هي(Threads)النياسب
المشكلة هذه تنتج الحقيقة في)DeadLock (األقفال إستخدام عن Locks ال إستخدام وعن Mutexp أيضا
مفرغة حلقات فيها تحدث ال بحيث النياسب متعددة تطبيقات تصميم iجدا الصعب من(DeadLocks)
04132023 1149 PM 23
Monitor Class( كائن واحد قفلNETفي( objectلكل نيسب قبل من عليه الحصول يتم الصفMonitor التالية المزايا يمللك
على- 1 الحصول ويتم بغرض الطلب( Monitor)المراقبمرتبطة عند2 الكود- ضمن مكان أي في استدعائه يمكن أي مقيد غيرالصنف- 3 هذا من غرض إنشاء يمكن ال
) نيسب ) من أكثر من إليه الوصول يتم غرضمتزامن كل أجل من القفل يملك وحيد نيسب( جاهزية لكي (Ready Queueرتل المعالج يختارها أن تنتظر التي النياسب يحوي
النياسب بقية استبعاد مع القفل على تحصل( إنتظار (Waiting Queueرتل إيقاظ إنتظارإشارة حالة في التي النياسب يحوي
القفل على الحصول لتستعيد أخر نيسب من
04132023 1149 PM 24
Monitor Class
04132023 1149 PM 25
Producer Consumere Example
04132023 1149 PM 4
التشغيل نظم في مقدمةالنيسب تعريف(Thread) برمجيمستقل مسلك عن عبارة هو
المكدس النياسبفي (Stack)في من غيره مع ويشتركأخرى (Heap)الكومة نريد بعبارة التي التعليمات من سياق هو
التوازي على تنفيذها األخرى التعليمات من غيرها مع
كل الحقيقة عن نيسبفي عبارة من + Stackهو مجموعةالخاصة البرنامج )السجالت عداد فيها ( PCبما
مهمةكل( Process )تحويThread األقل واحد على
المهام إدارة( Processes Management )التشغيل نظام مهمة من هي
النياسب إدارة المبرمج( Threads Management )أما مهمة من فهي
المهام وجدولة النياسب جدولة
04132023 1149 PM 5
النياسب تعدد إلى نحتاج لماذاMultithreading
( الخلفية في (Executing in Backgroundالتنفيذ العمل لتسريع مرة من اكثر مهمة إنجاز
نيسب من أكثر على العمل تقسيم يمكن معينة صورة لمعالجة برنامج أمثل تنفيذ استغاللا بنى ) للموارد وجود حال في (SMPلمتاحة
البرامج من محدد نوع لبناء الطبيعية الطريقة هو النياسب تعدد أنواعها بكافة المخدمات
04132023 1149 PM 6
النياسب متعددة تطبيقات بإنشاء نقوم كيفMultithreaded
( النيسب أن اآلن إلى يتم( Threadعلمنا التي التعليمات من مجموعة هوالبرنامج بقية مع التوازي على تنفيذها
مثل_ ت التعليمات ال Methodهذه هذا اسم تمرير إلى Methodيتم_سمى مندوبأو ) مفوض إلى( Delegateي تسليمه يتم المندوب وهذا
الصف من ThreadغرضDelegate نفس تحمل التي التوابع من مجموعة عن مفوض التوقيعهي
04132023 1149 PM 7
( نيسب (Thread Terminatationإيقاف عمله يتنهي ومتى النيسب إيقاف يتم كيف المنهج طريق عن قسري بشكل النيسب )( Abortإيقاف م_حبذة غير الطريقة هذه
04132023 1149 PM 8
الخلفية في تعمل التي Background النياسبThreads
( المهام من مجموعة يستعمل التشغيل الخلفية( Processesنظام في تعمل والتي(Background( )باسم ويندوز نظام في ( Windows Servicesوتسمىنظام ويندوز خدمات في _سمى LinuxUnixأما daemonsفت
األمام في تعمل التي المهام من أقل أفضلية لها يكون الخلفية في تعمل التي المهام يعمل معين نيسب نجعل أن يمكننا حيث النياسب على تطبيقها يمكن الفكرة نفس
الخلفية في( الخلفية في يعمل ما نيسب نجعل أن الخاصية( Backgroundيمكن طريق عن
IsBackground بالقيمة ضبطها يتم trueوالتي
( الخلفية النياسب أمامي( )Backgroundتنتهي نيسب أخر إنتهاء (forgroundعند
04132023 1149 PM 9
Thread Class الصنف نظام SystemThreadingThreadيمثل مستوى في نيسب
التشغيل الصنف في الموجود الخصائص Threadأهم
ϑ λ ϭϟ Δϳλ ΎΧϟ
ΩϳόΗ ϊ Οέϣ( Reference )ϰϟ Ώγϳϧϟ Ϋϔϧϣϟ Ύ˱ϳϟΎΣ CurrentThread
ΩϳόΗ true Ϋ ϥΎϛ Ώγϳϧϟ Ωϗ ΩΑ ϡϟϭ ϲϬΗϧϳ ΩόΑ IsAlive
ΩϳόΗ true Ϋ ϥΎϛ Ώγϳϧϟ ϝϣόϳ ϲϓ ΔϳϔϠΧϟ ISBackground
ΩϳόΗ ϭ ΩΩΣΗ( set or get )ϡγ Ώγϳϧϟ Name
ΩϳόΗ ϭ ΩΩΣΗ( set or get )ΔϳϠο ϓ Ώγϳϧϟ Priority
ΩϳόΗ ϭ ΩΩΣΗ( set or get )ΔϟΎΣ Ώγϳϧϟ ThreadState
04132023 1149 PM 10
Thread Class الصنف في الموجود المناهج Threadأهم
ϑ λ ϭϟ (ΔϘϳέρϟmethod) ΏγϳϧϟΫϳϔϧΗΑΫϳϔϧΗΑ ΩΑϟ Start
ϱέϭϓϝϛηΑΏγϳϧϟΫϳϔϧΗϲϬϧΗ Abort
ΔϟΎΣϲϓϥϭϛϳϱΫϟ Ώγϳϧϟϊ ρΎϘΗwaitSleepJoin Interrupt
ΫϳϔϧΗϲϬΗϧϳϰΗΣ )ΞϬϧϣϟΫϬϟϲϋΩΗγϣ˵ϟΏγϳϧϟ(ϥϳόϣΏγϳϧέΎυΗϧΏγϳϧϟΫϫ
Join
(ΓΩϭΩΣϣέϳ ΓέΗϔϟΏγϳϧϟϝϣϋ˯ΎΟέϏpause )-Εϗϣϑ ΎϘϳ - Suspend
(ϕΑΎγϟϊ ΑΎΗϟϝϣϋϝρΑΗSuspend) Resume
ΓΩΩΣϣΓέΗϔϟΏγϳϧϟ ϡϭϧΗ Sleep
04132023 1149 PM 11
النيسب Thread Statesحاالت ( التعداد ضمن موجودة وهي حاالت عدة أو حالة نيسب الم_سمى( EnumلكلThreadStateΔϣϳϘϟ ϒλϮϟ Running Ώγϳϧϟ ϝϣόϳ ϥϵ StopRequested Ώγϳϧϟ Ωϗ ϝΑϘΗγ ΓέΎη ϑ ΎϘϳ(Abort )SuspendRequested Ώγϳϧϟ Ωϗ ϝΑϘΗγ ΓέΎη ϑ ΎϘϳ Εϗϣ(pause )Background Ώγϳϧϟ ϝϣόϳ ϲϓ ΔϳϔϠΧϟ Unstarted Ώγϳϧϟ ϡΗ ϩΎηϧ ϥϛϟϭ ϡϟ ϡΗϳ ΫϳϔϧΗ ΞϬϧϣϟ Start)( Stopped Ώγϳϧϟ ϡΗ ϪϓΎϘϳ )ΕΎϣΐδϴϨϟ (ϲΎϬϧϞϜθΑ WaitSleepJoin Ώγϳϧϟ ˯ΎϋΩΗγϥο ϑ ϗϭΗϣwait ϭSleep ϭJoin Suspended Ώγϳϧϟ ϑ ϗϭΗϣ ϝϛηΑ Εϗϣ AbortRequested ϝϘϧΗϳ Ώγϳϧϟ ϰϟ ϩΫϫ ΔϟΎΣϟ ΎϣΩϧϋ ϥϭϛϧ Ωϗ ΎϧϳϋΩΗγ ΞϬϧϣϟ
Abort ΏγϳϧϠϟ ϥϛϟϭ Ϋϫ Ώγϳϧϟ ϡϟ ϝΑϘΗγϳ ΩόΑ ΓέΎη ϑ ΎϘϳϹ ϲΗϟϭ ϡΗϳ έϳΑόΗϟ ΎϬϧϋ ˯ΎϧΛΗγϹΎΑ( ThreadAbortException )ϱΫϟϭ ϲϬϧϳ ϝϣϋ Ϋϫ Ώγϳϧϟ
Aborted α ϔϧ ΔϟΎΣϟ ΔϘΑΎγϟ(AbortRequested) ϭ Ώγϳϧϟ Ωϗ ϑ ϗϭΗ(ΕΎϣ )ϥϛϟϭ ϪΗΎΣ ϡϟ έϳϐΗΗ ϰϟ ΔϟΎΣϟ Stopped
04132023 1149 PM 12
Thread Priority ) ( نفس في معه تشترك التي النياسب من لغيره بالنسبة أولوية أفضلية نيسب لكل
(Processالمهمة ) بأفضلية النياسب جميع إنشاء Normalيتم
ϑ λ ϭϟ ΔϣϳϘϟ
ΎϳϠόϟΔϳϠο ϓϷϪϟΏγϳϧϟ Highest
ϱΩΎόϟΏγϳϧϟϥϣϰϠϋΔϳϠο ϓϪϟΏγϳϧϟ AboveNormal
ΔϳΩΎϋΔϳϠο ϓϪϟΏγϳϧϟ Normal
ϱΩΎόϟΏγϳϧϟϥϣϰϧΩΔϳϠο ϓϪϟΏγϳϧϟ BelowNormal
ϪϟΏγϳϧϟϷΔϳϠο ϓΎϳϧΩϟ Lowest
04132023 1149 PM 13
الموارد على التنافسConcurrency
النياسب التطبيقات ذات ( Multithreaded Application)متعددة p جدا عظيمة فوائد
p أبدا p سهال p أمرا ليس النياسب إدارة ستكون النتائج فإن الذاكرة في مشترك غرض على العمل نيسبان حاول إذا
خاطئة الموارد على التنافس مشاكل لحل أساسين مفهومين على التعرف يجب
الحرجة المقاطع( Critical Sections )(القفلLock ) دخول لتحقيق طريقة واحد نيسبوهي الحرج المقطع إلى
مالحظات
) نحتاج ) التي الشيفرة الكود من جزء أصغر نقفل بحيث القفل استعمال عند الحذر علينا يجبالبرنامج ضمن حمايته إلى
المهام نطاق على ولكن التشغيل نظام قبل من ومطبقة موجودة هي األفكار هذه(Processes )النياسب نطاق على وسنراها
04132023 1149 PM 14
الحرجة المقاطع استخداموالقفل
Lock
read value from DB update value in RAMwriting value to DB
04132023 1149 PM 15
الحرجة المقاطع استخداموالقفل
Static int [] arr=new int [10]
Static int index++ if (indexgt=10) return ConsoleWriteLine(arr[index])
04132023 1149 PM 16
النياسب بين ThreadsالتزامنSynchronization
هما لسببين النياسب بين المزامنة إلى نحتاجمشتركة موارد استخدامالتواقت(Concurrency)
Thread B Globalx=4
Thread A
Globalx=3
call function
Func(Globalx )
04132023 1149 PM 17
التزامن SynchronizationتحقيقImplementation
من مال سحب بعمليات والقيام مصرفي حساب على نيسب من أكثر ولوج مسألةالرصيد
المثال بعرض تزامن سنقوم دون من تزامن مرة مع مرة و ( في تكون النياسب وبقية الغرض على قفل يضع الحرج المقطع إلى يدخل ما لحظة في واحد نيسب فقط
(انتظارحالة ( الحرج المقطع كامل تنفيذ من النيسب هذ ينتهي أن كاملة بعد مناقلة يمثل بتحريريقوم( والذي
القفل التشغيل نظام يقوم النياسب ثم أحد إنتظار بإختيار حالة في التي الحرج المقطع في للدخول
04132023 1149 PM 18
التزامن Synchronization Classesأصناف الصفInterlocked ( مناهج على الصنف هذه آمنة (methodيحتوي
(Safe ) العمليات اآلمنةلتقديم نياسب عدة بين المشتركة المتحوالت على هي المناهج أن( atomic )ذريةهذه عن المنهجأي عبارة مناقلةهو
(Transaction ) كامل بشكل تتم أن مقاطعة فإما المعالج دون من W أبدا تتم ال أن أو
المناهج هذه من
Increment - Decrement Exchange القديمة )األصليةالقيمة ويعيد متحولفي قيمةيضع للمتحول( CompareExchange
04132023 1149 PM 19
Parallel Programming Example من األعداد بجمع pولدينا n 1جمع نيسب كل يقوم حيث نيسب
من np 1األعداد
04132023 1149 PM 20
Semaphore Class المهام بين التزامن لتحقيق طريقة عن عبارة هو السيمافور )Processes (يمكن التشغيل نظام مستوى في p لتحقيق استعماله أيضا
النياسب بين التزامن
مثل رقم عن عبارة_ مورد على الحصول تستطيع التي النياسب من محدود عدد ي من أكثر ق[بل من عليها التنافس يتم التي الموارد من( Pool)حوض (أو مشترك)نيسب
الطابعة مثال
هامة عدد مالحظة هي السيمافور الصفر قيمة يساوي أو عن أكبر عددويعبرأن النياسب تستطيع إنتظار الموردعلى تحصلالتي دون من و مباشرة
04132023 1149 PM 21
Mutex Class (Mutual Exclusion)( الصف هذا بسيطة( Mutexيعطي يسمح للتزامنطريقة لنيسب بحيث
مع واحد الحرج المقطع إلى البقية بالدخول في ) إستبعاد تبقى النياسب بقيةالنيسب هذا يقوم أن إلى إنتظار ال حالة ( Mutexبتحرير
ال ( Lock - unlockآلية )Mutex يستعمل
04132023 1149 PM 22
اإلقفال حدوث تتجنب أن يمكن كيفبرنامجك( Deadlockالمتبادل) شيفرة في
نيسبين بين يحدث) Two Threads (إلى بحاجة النيسبين من كل عندما عمله يكمل حتى األخر من معطيات
عتبر من أعقد المشاكل التي واجهت مصمي نظم التشغيلWهذه المشكلة تالمهام على حلها تم مستوى على حلها لكن و (Processes)مستوى
المبرمج مسؤولية من هي(Threads)النياسب
المشكلة هذه تنتج الحقيقة في)DeadLock (األقفال إستخدام عن Locks ال إستخدام وعن Mutexp أيضا
مفرغة حلقات فيها تحدث ال بحيث النياسب متعددة تطبيقات تصميم iجدا الصعب من(DeadLocks)
04132023 1149 PM 23
Monitor Class( كائن واحد قفلNETفي( objectلكل نيسب قبل من عليه الحصول يتم الصفMonitor التالية المزايا يمللك
على- 1 الحصول ويتم بغرض الطلب( Monitor)المراقبمرتبطة عند2 الكود- ضمن مكان أي في استدعائه يمكن أي مقيد غيرالصنف- 3 هذا من غرض إنشاء يمكن ال
) نيسب ) من أكثر من إليه الوصول يتم غرضمتزامن كل أجل من القفل يملك وحيد نيسب( جاهزية لكي (Ready Queueرتل المعالج يختارها أن تنتظر التي النياسب يحوي
النياسب بقية استبعاد مع القفل على تحصل( إنتظار (Waiting Queueرتل إيقاظ إنتظارإشارة حالة في التي النياسب يحوي
القفل على الحصول لتستعيد أخر نيسب من
04132023 1149 PM 24
Monitor Class
04132023 1149 PM 25
Producer Consumere Example
04132023 1149 PM 5
النياسب تعدد إلى نحتاج لماذاMultithreading
( الخلفية في (Executing in Backgroundالتنفيذ العمل لتسريع مرة من اكثر مهمة إنجاز
نيسب من أكثر على العمل تقسيم يمكن معينة صورة لمعالجة برنامج أمثل تنفيذ استغاللا بنى ) للموارد وجود حال في (SMPلمتاحة
البرامج من محدد نوع لبناء الطبيعية الطريقة هو النياسب تعدد أنواعها بكافة المخدمات
04132023 1149 PM 6
النياسب متعددة تطبيقات بإنشاء نقوم كيفMultithreaded
( النيسب أن اآلن إلى يتم( Threadعلمنا التي التعليمات من مجموعة هوالبرنامج بقية مع التوازي على تنفيذها
مثل_ ت التعليمات ال Methodهذه هذا اسم تمرير إلى Methodيتم_سمى مندوبأو ) مفوض إلى( Delegateي تسليمه يتم المندوب وهذا
الصف من ThreadغرضDelegate نفس تحمل التي التوابع من مجموعة عن مفوض التوقيعهي
04132023 1149 PM 7
( نيسب (Thread Terminatationإيقاف عمله يتنهي ومتى النيسب إيقاف يتم كيف المنهج طريق عن قسري بشكل النيسب )( Abortإيقاف م_حبذة غير الطريقة هذه
04132023 1149 PM 8
الخلفية في تعمل التي Background النياسبThreads
( المهام من مجموعة يستعمل التشغيل الخلفية( Processesنظام في تعمل والتي(Background( )باسم ويندوز نظام في ( Windows Servicesوتسمىنظام ويندوز خدمات في _سمى LinuxUnixأما daemonsفت
األمام في تعمل التي المهام من أقل أفضلية لها يكون الخلفية في تعمل التي المهام يعمل معين نيسب نجعل أن يمكننا حيث النياسب على تطبيقها يمكن الفكرة نفس
الخلفية في( الخلفية في يعمل ما نيسب نجعل أن الخاصية( Backgroundيمكن طريق عن
IsBackground بالقيمة ضبطها يتم trueوالتي
( الخلفية النياسب أمامي( )Backgroundتنتهي نيسب أخر إنتهاء (forgroundعند
04132023 1149 PM 9
Thread Class الصنف نظام SystemThreadingThreadيمثل مستوى في نيسب
التشغيل الصنف في الموجود الخصائص Threadأهم
ϑ λ ϭϟ Δϳλ ΎΧϟ
ΩϳόΗ ϊ Οέϣ( Reference )ϰϟ Ώγϳϧϟ Ϋϔϧϣϟ Ύ˱ϳϟΎΣ CurrentThread
ΩϳόΗ true Ϋ ϥΎϛ Ώγϳϧϟ Ωϗ ΩΑ ϡϟϭ ϲϬΗϧϳ ΩόΑ IsAlive
ΩϳόΗ true Ϋ ϥΎϛ Ώγϳϧϟ ϝϣόϳ ϲϓ ΔϳϔϠΧϟ ISBackground
ΩϳόΗ ϭ ΩΩΣΗ( set or get )ϡγ Ώγϳϧϟ Name
ΩϳόΗ ϭ ΩΩΣΗ( set or get )ΔϳϠο ϓ Ώγϳϧϟ Priority
ΩϳόΗ ϭ ΩΩΣΗ( set or get )ΔϟΎΣ Ώγϳϧϟ ThreadState
04132023 1149 PM 10
Thread Class الصنف في الموجود المناهج Threadأهم
ϑ λ ϭϟ (ΔϘϳέρϟmethod) ΏγϳϧϟΫϳϔϧΗΑΫϳϔϧΗΑ ΩΑϟ Start
ϱέϭϓϝϛηΑΏγϳϧϟΫϳϔϧΗϲϬϧΗ Abort
ΔϟΎΣϲϓϥϭϛϳϱΫϟ Ώγϳϧϟϊ ρΎϘΗwaitSleepJoin Interrupt
ΫϳϔϧΗϲϬΗϧϳϰΗΣ )ΞϬϧϣϟΫϬϟϲϋΩΗγϣ˵ϟΏγϳϧϟ(ϥϳόϣΏγϳϧέΎυΗϧΏγϳϧϟΫϫ
Join
(ΓΩϭΩΣϣέϳ ΓέΗϔϟΏγϳϧϟϝϣϋ˯ΎΟέϏpause )-Εϗϣϑ ΎϘϳ - Suspend
(ϕΑΎγϟϊ ΑΎΗϟϝϣϋϝρΑΗSuspend) Resume
ΓΩΩΣϣΓέΗϔϟΏγϳϧϟ ϡϭϧΗ Sleep
04132023 1149 PM 11
النيسب Thread Statesحاالت ( التعداد ضمن موجودة وهي حاالت عدة أو حالة نيسب الم_سمى( EnumلكلThreadStateΔϣϳϘϟ ϒλϮϟ Running Ώγϳϧϟ ϝϣόϳ ϥϵ StopRequested Ώγϳϧϟ Ωϗ ϝΑϘΗγ ΓέΎη ϑ ΎϘϳ(Abort )SuspendRequested Ώγϳϧϟ Ωϗ ϝΑϘΗγ ΓέΎη ϑ ΎϘϳ Εϗϣ(pause )Background Ώγϳϧϟ ϝϣόϳ ϲϓ ΔϳϔϠΧϟ Unstarted Ώγϳϧϟ ϡΗ ϩΎηϧ ϥϛϟϭ ϡϟ ϡΗϳ ΫϳϔϧΗ ΞϬϧϣϟ Start)( Stopped Ώγϳϧϟ ϡΗ ϪϓΎϘϳ )ΕΎϣΐδϴϨϟ (ϲΎϬϧϞϜθΑ WaitSleepJoin Ώγϳϧϟ ˯ΎϋΩΗγϥο ϑ ϗϭΗϣwait ϭSleep ϭJoin Suspended Ώγϳϧϟ ϑ ϗϭΗϣ ϝϛηΑ Εϗϣ AbortRequested ϝϘϧΗϳ Ώγϳϧϟ ϰϟ ϩΫϫ ΔϟΎΣϟ ΎϣΩϧϋ ϥϭϛϧ Ωϗ ΎϧϳϋΩΗγ ΞϬϧϣϟ
Abort ΏγϳϧϠϟ ϥϛϟϭ Ϋϫ Ώγϳϧϟ ϡϟ ϝΑϘΗγϳ ΩόΑ ΓέΎη ϑ ΎϘϳϹ ϲΗϟϭ ϡΗϳ έϳΑόΗϟ ΎϬϧϋ ˯ΎϧΛΗγϹΎΑ( ThreadAbortException )ϱΫϟϭ ϲϬϧϳ ϝϣϋ Ϋϫ Ώγϳϧϟ
Aborted α ϔϧ ΔϟΎΣϟ ΔϘΑΎγϟ(AbortRequested) ϭ Ώγϳϧϟ Ωϗ ϑ ϗϭΗ(ΕΎϣ )ϥϛϟϭ ϪΗΎΣ ϡϟ έϳϐΗΗ ϰϟ ΔϟΎΣϟ Stopped
04132023 1149 PM 12
Thread Priority ) ( نفس في معه تشترك التي النياسب من لغيره بالنسبة أولوية أفضلية نيسب لكل
(Processالمهمة ) بأفضلية النياسب جميع إنشاء Normalيتم
ϑ λ ϭϟ ΔϣϳϘϟ
ΎϳϠόϟΔϳϠο ϓϷϪϟΏγϳϧϟ Highest
ϱΩΎόϟΏγϳϧϟϥϣϰϠϋΔϳϠο ϓϪϟΏγϳϧϟ AboveNormal
ΔϳΩΎϋΔϳϠο ϓϪϟΏγϳϧϟ Normal
ϱΩΎόϟΏγϳϧϟϥϣϰϧΩΔϳϠο ϓϪϟΏγϳϧϟ BelowNormal
ϪϟΏγϳϧϟϷΔϳϠο ϓΎϳϧΩϟ Lowest
04132023 1149 PM 13
الموارد على التنافسConcurrency
النياسب التطبيقات ذات ( Multithreaded Application)متعددة p جدا عظيمة فوائد
p أبدا p سهال p أمرا ليس النياسب إدارة ستكون النتائج فإن الذاكرة في مشترك غرض على العمل نيسبان حاول إذا
خاطئة الموارد على التنافس مشاكل لحل أساسين مفهومين على التعرف يجب
الحرجة المقاطع( Critical Sections )(القفلLock ) دخول لتحقيق طريقة واحد نيسبوهي الحرج المقطع إلى
مالحظات
) نحتاج ) التي الشيفرة الكود من جزء أصغر نقفل بحيث القفل استعمال عند الحذر علينا يجبالبرنامج ضمن حمايته إلى
المهام نطاق على ولكن التشغيل نظام قبل من ومطبقة موجودة هي األفكار هذه(Processes )النياسب نطاق على وسنراها
04132023 1149 PM 14
الحرجة المقاطع استخداموالقفل
Lock
read value from DB update value in RAMwriting value to DB
04132023 1149 PM 15
الحرجة المقاطع استخداموالقفل
Static int [] arr=new int [10]
Static int index++ if (indexgt=10) return ConsoleWriteLine(arr[index])
04132023 1149 PM 16
النياسب بين ThreadsالتزامنSynchronization
هما لسببين النياسب بين المزامنة إلى نحتاجمشتركة موارد استخدامالتواقت(Concurrency)
Thread B Globalx=4
Thread A
Globalx=3
call function
Func(Globalx )
04132023 1149 PM 17
التزامن SynchronizationتحقيقImplementation
من مال سحب بعمليات والقيام مصرفي حساب على نيسب من أكثر ولوج مسألةالرصيد
المثال بعرض تزامن سنقوم دون من تزامن مرة مع مرة و ( في تكون النياسب وبقية الغرض على قفل يضع الحرج المقطع إلى يدخل ما لحظة في واحد نيسب فقط
(انتظارحالة ( الحرج المقطع كامل تنفيذ من النيسب هذ ينتهي أن كاملة بعد مناقلة يمثل بتحريريقوم( والذي
القفل التشغيل نظام يقوم النياسب ثم أحد إنتظار بإختيار حالة في التي الحرج المقطع في للدخول
04132023 1149 PM 18
التزامن Synchronization Classesأصناف الصفInterlocked ( مناهج على الصنف هذه آمنة (methodيحتوي
(Safe ) العمليات اآلمنةلتقديم نياسب عدة بين المشتركة المتحوالت على هي المناهج أن( atomic )ذريةهذه عن المنهجأي عبارة مناقلةهو
(Transaction ) كامل بشكل تتم أن مقاطعة فإما المعالج دون من W أبدا تتم ال أن أو
المناهج هذه من
Increment - Decrement Exchange القديمة )األصليةالقيمة ويعيد متحولفي قيمةيضع للمتحول( CompareExchange
04132023 1149 PM 19
Parallel Programming Example من األعداد بجمع pولدينا n 1جمع نيسب كل يقوم حيث نيسب
من np 1األعداد
04132023 1149 PM 20
Semaphore Class المهام بين التزامن لتحقيق طريقة عن عبارة هو السيمافور )Processes (يمكن التشغيل نظام مستوى في p لتحقيق استعماله أيضا
النياسب بين التزامن
مثل رقم عن عبارة_ مورد على الحصول تستطيع التي النياسب من محدود عدد ي من أكثر ق[بل من عليها التنافس يتم التي الموارد من( Pool)حوض (أو مشترك)نيسب
الطابعة مثال
هامة عدد مالحظة هي السيمافور الصفر قيمة يساوي أو عن أكبر عددويعبرأن النياسب تستطيع إنتظار الموردعلى تحصلالتي دون من و مباشرة
04132023 1149 PM 21
Mutex Class (Mutual Exclusion)( الصف هذا بسيطة( Mutexيعطي يسمح للتزامنطريقة لنيسب بحيث
مع واحد الحرج المقطع إلى البقية بالدخول في ) إستبعاد تبقى النياسب بقيةالنيسب هذا يقوم أن إلى إنتظار ال حالة ( Mutexبتحرير
ال ( Lock - unlockآلية )Mutex يستعمل
04132023 1149 PM 22
اإلقفال حدوث تتجنب أن يمكن كيفبرنامجك( Deadlockالمتبادل) شيفرة في
نيسبين بين يحدث) Two Threads (إلى بحاجة النيسبين من كل عندما عمله يكمل حتى األخر من معطيات
عتبر من أعقد المشاكل التي واجهت مصمي نظم التشغيلWهذه المشكلة تالمهام على حلها تم مستوى على حلها لكن و (Processes)مستوى
المبرمج مسؤولية من هي(Threads)النياسب
المشكلة هذه تنتج الحقيقة في)DeadLock (األقفال إستخدام عن Locks ال إستخدام وعن Mutexp أيضا
مفرغة حلقات فيها تحدث ال بحيث النياسب متعددة تطبيقات تصميم iجدا الصعب من(DeadLocks)
04132023 1149 PM 23
Monitor Class( كائن واحد قفلNETفي( objectلكل نيسب قبل من عليه الحصول يتم الصفMonitor التالية المزايا يمللك
على- 1 الحصول ويتم بغرض الطلب( Monitor)المراقبمرتبطة عند2 الكود- ضمن مكان أي في استدعائه يمكن أي مقيد غيرالصنف- 3 هذا من غرض إنشاء يمكن ال
) نيسب ) من أكثر من إليه الوصول يتم غرضمتزامن كل أجل من القفل يملك وحيد نيسب( جاهزية لكي (Ready Queueرتل المعالج يختارها أن تنتظر التي النياسب يحوي
النياسب بقية استبعاد مع القفل على تحصل( إنتظار (Waiting Queueرتل إيقاظ إنتظارإشارة حالة في التي النياسب يحوي
القفل على الحصول لتستعيد أخر نيسب من
04132023 1149 PM 24
Monitor Class
04132023 1149 PM 25
Producer Consumere Example
04132023 1149 PM 6
النياسب متعددة تطبيقات بإنشاء نقوم كيفMultithreaded
( النيسب أن اآلن إلى يتم( Threadعلمنا التي التعليمات من مجموعة هوالبرنامج بقية مع التوازي على تنفيذها
مثل_ ت التعليمات ال Methodهذه هذا اسم تمرير إلى Methodيتم_سمى مندوبأو ) مفوض إلى( Delegateي تسليمه يتم المندوب وهذا
الصف من ThreadغرضDelegate نفس تحمل التي التوابع من مجموعة عن مفوض التوقيعهي
04132023 1149 PM 7
( نيسب (Thread Terminatationإيقاف عمله يتنهي ومتى النيسب إيقاف يتم كيف المنهج طريق عن قسري بشكل النيسب )( Abortإيقاف م_حبذة غير الطريقة هذه
04132023 1149 PM 8
الخلفية في تعمل التي Background النياسبThreads
( المهام من مجموعة يستعمل التشغيل الخلفية( Processesنظام في تعمل والتي(Background( )باسم ويندوز نظام في ( Windows Servicesوتسمىنظام ويندوز خدمات في _سمى LinuxUnixأما daemonsفت
األمام في تعمل التي المهام من أقل أفضلية لها يكون الخلفية في تعمل التي المهام يعمل معين نيسب نجعل أن يمكننا حيث النياسب على تطبيقها يمكن الفكرة نفس
الخلفية في( الخلفية في يعمل ما نيسب نجعل أن الخاصية( Backgroundيمكن طريق عن
IsBackground بالقيمة ضبطها يتم trueوالتي
( الخلفية النياسب أمامي( )Backgroundتنتهي نيسب أخر إنتهاء (forgroundعند
04132023 1149 PM 9
Thread Class الصنف نظام SystemThreadingThreadيمثل مستوى في نيسب
التشغيل الصنف في الموجود الخصائص Threadأهم
ϑ λ ϭϟ Δϳλ ΎΧϟ
ΩϳόΗ ϊ Οέϣ( Reference )ϰϟ Ώγϳϧϟ Ϋϔϧϣϟ Ύ˱ϳϟΎΣ CurrentThread
ΩϳόΗ true Ϋ ϥΎϛ Ώγϳϧϟ Ωϗ ΩΑ ϡϟϭ ϲϬΗϧϳ ΩόΑ IsAlive
ΩϳόΗ true Ϋ ϥΎϛ Ώγϳϧϟ ϝϣόϳ ϲϓ ΔϳϔϠΧϟ ISBackground
ΩϳόΗ ϭ ΩΩΣΗ( set or get )ϡγ Ώγϳϧϟ Name
ΩϳόΗ ϭ ΩΩΣΗ( set or get )ΔϳϠο ϓ Ώγϳϧϟ Priority
ΩϳόΗ ϭ ΩΩΣΗ( set or get )ΔϟΎΣ Ώγϳϧϟ ThreadState
04132023 1149 PM 10
Thread Class الصنف في الموجود المناهج Threadأهم
ϑ λ ϭϟ (ΔϘϳέρϟmethod) ΏγϳϧϟΫϳϔϧΗΑΫϳϔϧΗΑ ΩΑϟ Start
ϱέϭϓϝϛηΑΏγϳϧϟΫϳϔϧΗϲϬϧΗ Abort
ΔϟΎΣϲϓϥϭϛϳϱΫϟ Ώγϳϧϟϊ ρΎϘΗwaitSleepJoin Interrupt
ΫϳϔϧΗϲϬΗϧϳϰΗΣ )ΞϬϧϣϟΫϬϟϲϋΩΗγϣ˵ϟΏγϳϧϟ(ϥϳόϣΏγϳϧέΎυΗϧΏγϳϧϟΫϫ
Join
(ΓΩϭΩΣϣέϳ ΓέΗϔϟΏγϳϧϟϝϣϋ˯ΎΟέϏpause )-Εϗϣϑ ΎϘϳ - Suspend
(ϕΑΎγϟϊ ΑΎΗϟϝϣϋϝρΑΗSuspend) Resume
ΓΩΩΣϣΓέΗϔϟΏγϳϧϟ ϡϭϧΗ Sleep
04132023 1149 PM 11
النيسب Thread Statesحاالت ( التعداد ضمن موجودة وهي حاالت عدة أو حالة نيسب الم_سمى( EnumلكلThreadStateΔϣϳϘϟ ϒλϮϟ Running Ώγϳϧϟ ϝϣόϳ ϥϵ StopRequested Ώγϳϧϟ Ωϗ ϝΑϘΗγ ΓέΎη ϑ ΎϘϳ(Abort )SuspendRequested Ώγϳϧϟ Ωϗ ϝΑϘΗγ ΓέΎη ϑ ΎϘϳ Εϗϣ(pause )Background Ώγϳϧϟ ϝϣόϳ ϲϓ ΔϳϔϠΧϟ Unstarted Ώγϳϧϟ ϡΗ ϩΎηϧ ϥϛϟϭ ϡϟ ϡΗϳ ΫϳϔϧΗ ΞϬϧϣϟ Start)( Stopped Ώγϳϧϟ ϡΗ ϪϓΎϘϳ )ΕΎϣΐδϴϨϟ (ϲΎϬϧϞϜθΑ WaitSleepJoin Ώγϳϧϟ ˯ΎϋΩΗγϥο ϑ ϗϭΗϣwait ϭSleep ϭJoin Suspended Ώγϳϧϟ ϑ ϗϭΗϣ ϝϛηΑ Εϗϣ AbortRequested ϝϘϧΗϳ Ώγϳϧϟ ϰϟ ϩΫϫ ΔϟΎΣϟ ΎϣΩϧϋ ϥϭϛϧ Ωϗ ΎϧϳϋΩΗγ ΞϬϧϣϟ
Abort ΏγϳϧϠϟ ϥϛϟϭ Ϋϫ Ώγϳϧϟ ϡϟ ϝΑϘΗγϳ ΩόΑ ΓέΎη ϑ ΎϘϳϹ ϲΗϟϭ ϡΗϳ έϳΑόΗϟ ΎϬϧϋ ˯ΎϧΛΗγϹΎΑ( ThreadAbortException )ϱΫϟϭ ϲϬϧϳ ϝϣϋ Ϋϫ Ώγϳϧϟ
Aborted α ϔϧ ΔϟΎΣϟ ΔϘΑΎγϟ(AbortRequested) ϭ Ώγϳϧϟ Ωϗ ϑ ϗϭΗ(ΕΎϣ )ϥϛϟϭ ϪΗΎΣ ϡϟ έϳϐΗΗ ϰϟ ΔϟΎΣϟ Stopped
04132023 1149 PM 12
Thread Priority ) ( نفس في معه تشترك التي النياسب من لغيره بالنسبة أولوية أفضلية نيسب لكل
(Processالمهمة ) بأفضلية النياسب جميع إنشاء Normalيتم
ϑ λ ϭϟ ΔϣϳϘϟ
ΎϳϠόϟΔϳϠο ϓϷϪϟΏγϳϧϟ Highest
ϱΩΎόϟΏγϳϧϟϥϣϰϠϋΔϳϠο ϓϪϟΏγϳϧϟ AboveNormal
ΔϳΩΎϋΔϳϠο ϓϪϟΏγϳϧϟ Normal
ϱΩΎόϟΏγϳϧϟϥϣϰϧΩΔϳϠο ϓϪϟΏγϳϧϟ BelowNormal
ϪϟΏγϳϧϟϷΔϳϠο ϓΎϳϧΩϟ Lowest
04132023 1149 PM 13
الموارد على التنافسConcurrency
النياسب التطبيقات ذات ( Multithreaded Application)متعددة p جدا عظيمة فوائد
p أبدا p سهال p أمرا ليس النياسب إدارة ستكون النتائج فإن الذاكرة في مشترك غرض على العمل نيسبان حاول إذا
خاطئة الموارد على التنافس مشاكل لحل أساسين مفهومين على التعرف يجب
الحرجة المقاطع( Critical Sections )(القفلLock ) دخول لتحقيق طريقة واحد نيسبوهي الحرج المقطع إلى
مالحظات
) نحتاج ) التي الشيفرة الكود من جزء أصغر نقفل بحيث القفل استعمال عند الحذر علينا يجبالبرنامج ضمن حمايته إلى
المهام نطاق على ولكن التشغيل نظام قبل من ومطبقة موجودة هي األفكار هذه(Processes )النياسب نطاق على وسنراها
04132023 1149 PM 14
الحرجة المقاطع استخداموالقفل
Lock
read value from DB update value in RAMwriting value to DB
04132023 1149 PM 15
الحرجة المقاطع استخداموالقفل
Static int [] arr=new int [10]
Static int index++ if (indexgt=10) return ConsoleWriteLine(arr[index])
04132023 1149 PM 16
النياسب بين ThreadsالتزامنSynchronization
هما لسببين النياسب بين المزامنة إلى نحتاجمشتركة موارد استخدامالتواقت(Concurrency)
Thread B Globalx=4
Thread A
Globalx=3
call function
Func(Globalx )
04132023 1149 PM 17
التزامن SynchronizationتحقيقImplementation
من مال سحب بعمليات والقيام مصرفي حساب على نيسب من أكثر ولوج مسألةالرصيد
المثال بعرض تزامن سنقوم دون من تزامن مرة مع مرة و ( في تكون النياسب وبقية الغرض على قفل يضع الحرج المقطع إلى يدخل ما لحظة في واحد نيسب فقط
(انتظارحالة ( الحرج المقطع كامل تنفيذ من النيسب هذ ينتهي أن كاملة بعد مناقلة يمثل بتحريريقوم( والذي
القفل التشغيل نظام يقوم النياسب ثم أحد إنتظار بإختيار حالة في التي الحرج المقطع في للدخول
04132023 1149 PM 18
التزامن Synchronization Classesأصناف الصفInterlocked ( مناهج على الصنف هذه آمنة (methodيحتوي
(Safe ) العمليات اآلمنةلتقديم نياسب عدة بين المشتركة المتحوالت على هي المناهج أن( atomic )ذريةهذه عن المنهجأي عبارة مناقلةهو
(Transaction ) كامل بشكل تتم أن مقاطعة فإما المعالج دون من W أبدا تتم ال أن أو
المناهج هذه من
Increment - Decrement Exchange القديمة )األصليةالقيمة ويعيد متحولفي قيمةيضع للمتحول( CompareExchange
04132023 1149 PM 19
Parallel Programming Example من األعداد بجمع pولدينا n 1جمع نيسب كل يقوم حيث نيسب
من np 1األعداد
04132023 1149 PM 20
Semaphore Class المهام بين التزامن لتحقيق طريقة عن عبارة هو السيمافور )Processes (يمكن التشغيل نظام مستوى في p لتحقيق استعماله أيضا
النياسب بين التزامن
مثل رقم عن عبارة_ مورد على الحصول تستطيع التي النياسب من محدود عدد ي من أكثر ق[بل من عليها التنافس يتم التي الموارد من( Pool)حوض (أو مشترك)نيسب
الطابعة مثال
هامة عدد مالحظة هي السيمافور الصفر قيمة يساوي أو عن أكبر عددويعبرأن النياسب تستطيع إنتظار الموردعلى تحصلالتي دون من و مباشرة
04132023 1149 PM 21
Mutex Class (Mutual Exclusion)( الصف هذا بسيطة( Mutexيعطي يسمح للتزامنطريقة لنيسب بحيث
مع واحد الحرج المقطع إلى البقية بالدخول في ) إستبعاد تبقى النياسب بقيةالنيسب هذا يقوم أن إلى إنتظار ال حالة ( Mutexبتحرير
ال ( Lock - unlockآلية )Mutex يستعمل
04132023 1149 PM 22
اإلقفال حدوث تتجنب أن يمكن كيفبرنامجك( Deadlockالمتبادل) شيفرة في
نيسبين بين يحدث) Two Threads (إلى بحاجة النيسبين من كل عندما عمله يكمل حتى األخر من معطيات
عتبر من أعقد المشاكل التي واجهت مصمي نظم التشغيلWهذه المشكلة تالمهام على حلها تم مستوى على حلها لكن و (Processes)مستوى
المبرمج مسؤولية من هي(Threads)النياسب
المشكلة هذه تنتج الحقيقة في)DeadLock (األقفال إستخدام عن Locks ال إستخدام وعن Mutexp أيضا
مفرغة حلقات فيها تحدث ال بحيث النياسب متعددة تطبيقات تصميم iجدا الصعب من(DeadLocks)
04132023 1149 PM 23
Monitor Class( كائن واحد قفلNETفي( objectلكل نيسب قبل من عليه الحصول يتم الصفMonitor التالية المزايا يمللك
على- 1 الحصول ويتم بغرض الطلب( Monitor)المراقبمرتبطة عند2 الكود- ضمن مكان أي في استدعائه يمكن أي مقيد غيرالصنف- 3 هذا من غرض إنشاء يمكن ال
) نيسب ) من أكثر من إليه الوصول يتم غرضمتزامن كل أجل من القفل يملك وحيد نيسب( جاهزية لكي (Ready Queueرتل المعالج يختارها أن تنتظر التي النياسب يحوي
النياسب بقية استبعاد مع القفل على تحصل( إنتظار (Waiting Queueرتل إيقاظ إنتظارإشارة حالة في التي النياسب يحوي
القفل على الحصول لتستعيد أخر نيسب من
04132023 1149 PM 24
Monitor Class
04132023 1149 PM 25
Producer Consumere Example
04132023 1149 PM 7
( نيسب (Thread Terminatationإيقاف عمله يتنهي ومتى النيسب إيقاف يتم كيف المنهج طريق عن قسري بشكل النيسب )( Abortإيقاف م_حبذة غير الطريقة هذه
04132023 1149 PM 8
الخلفية في تعمل التي Background النياسبThreads
( المهام من مجموعة يستعمل التشغيل الخلفية( Processesنظام في تعمل والتي(Background( )باسم ويندوز نظام في ( Windows Servicesوتسمىنظام ويندوز خدمات في _سمى LinuxUnixأما daemonsفت
األمام في تعمل التي المهام من أقل أفضلية لها يكون الخلفية في تعمل التي المهام يعمل معين نيسب نجعل أن يمكننا حيث النياسب على تطبيقها يمكن الفكرة نفس
الخلفية في( الخلفية في يعمل ما نيسب نجعل أن الخاصية( Backgroundيمكن طريق عن
IsBackground بالقيمة ضبطها يتم trueوالتي
( الخلفية النياسب أمامي( )Backgroundتنتهي نيسب أخر إنتهاء (forgroundعند
04132023 1149 PM 9
Thread Class الصنف نظام SystemThreadingThreadيمثل مستوى في نيسب
التشغيل الصنف في الموجود الخصائص Threadأهم
ϑ λ ϭϟ Δϳλ ΎΧϟ
ΩϳόΗ ϊ Οέϣ( Reference )ϰϟ Ώγϳϧϟ Ϋϔϧϣϟ Ύ˱ϳϟΎΣ CurrentThread
ΩϳόΗ true Ϋ ϥΎϛ Ώγϳϧϟ Ωϗ ΩΑ ϡϟϭ ϲϬΗϧϳ ΩόΑ IsAlive
ΩϳόΗ true Ϋ ϥΎϛ Ώγϳϧϟ ϝϣόϳ ϲϓ ΔϳϔϠΧϟ ISBackground
ΩϳόΗ ϭ ΩΩΣΗ( set or get )ϡγ Ώγϳϧϟ Name
ΩϳόΗ ϭ ΩΩΣΗ( set or get )ΔϳϠο ϓ Ώγϳϧϟ Priority
ΩϳόΗ ϭ ΩΩΣΗ( set or get )ΔϟΎΣ Ώγϳϧϟ ThreadState
04132023 1149 PM 10
Thread Class الصنف في الموجود المناهج Threadأهم
ϑ λ ϭϟ (ΔϘϳέρϟmethod) ΏγϳϧϟΫϳϔϧΗΑΫϳϔϧΗΑ ΩΑϟ Start
ϱέϭϓϝϛηΑΏγϳϧϟΫϳϔϧΗϲϬϧΗ Abort
ΔϟΎΣϲϓϥϭϛϳϱΫϟ Ώγϳϧϟϊ ρΎϘΗwaitSleepJoin Interrupt
ΫϳϔϧΗϲϬΗϧϳϰΗΣ )ΞϬϧϣϟΫϬϟϲϋΩΗγϣ˵ϟΏγϳϧϟ(ϥϳόϣΏγϳϧέΎυΗϧΏγϳϧϟΫϫ
Join
(ΓΩϭΩΣϣέϳ ΓέΗϔϟΏγϳϧϟϝϣϋ˯ΎΟέϏpause )-Εϗϣϑ ΎϘϳ - Suspend
(ϕΑΎγϟϊ ΑΎΗϟϝϣϋϝρΑΗSuspend) Resume
ΓΩΩΣϣΓέΗϔϟΏγϳϧϟ ϡϭϧΗ Sleep
04132023 1149 PM 11
النيسب Thread Statesحاالت ( التعداد ضمن موجودة وهي حاالت عدة أو حالة نيسب الم_سمى( EnumلكلThreadStateΔϣϳϘϟ ϒλϮϟ Running Ώγϳϧϟ ϝϣόϳ ϥϵ StopRequested Ώγϳϧϟ Ωϗ ϝΑϘΗγ ΓέΎη ϑ ΎϘϳ(Abort )SuspendRequested Ώγϳϧϟ Ωϗ ϝΑϘΗγ ΓέΎη ϑ ΎϘϳ Εϗϣ(pause )Background Ώγϳϧϟ ϝϣόϳ ϲϓ ΔϳϔϠΧϟ Unstarted Ώγϳϧϟ ϡΗ ϩΎηϧ ϥϛϟϭ ϡϟ ϡΗϳ ΫϳϔϧΗ ΞϬϧϣϟ Start)( Stopped Ώγϳϧϟ ϡΗ ϪϓΎϘϳ )ΕΎϣΐδϴϨϟ (ϲΎϬϧϞϜθΑ WaitSleepJoin Ώγϳϧϟ ˯ΎϋΩΗγϥο ϑ ϗϭΗϣwait ϭSleep ϭJoin Suspended Ώγϳϧϟ ϑ ϗϭΗϣ ϝϛηΑ Εϗϣ AbortRequested ϝϘϧΗϳ Ώγϳϧϟ ϰϟ ϩΫϫ ΔϟΎΣϟ ΎϣΩϧϋ ϥϭϛϧ Ωϗ ΎϧϳϋΩΗγ ΞϬϧϣϟ
Abort ΏγϳϧϠϟ ϥϛϟϭ Ϋϫ Ώγϳϧϟ ϡϟ ϝΑϘΗγϳ ΩόΑ ΓέΎη ϑ ΎϘϳϹ ϲΗϟϭ ϡΗϳ έϳΑόΗϟ ΎϬϧϋ ˯ΎϧΛΗγϹΎΑ( ThreadAbortException )ϱΫϟϭ ϲϬϧϳ ϝϣϋ Ϋϫ Ώγϳϧϟ
Aborted α ϔϧ ΔϟΎΣϟ ΔϘΑΎγϟ(AbortRequested) ϭ Ώγϳϧϟ Ωϗ ϑ ϗϭΗ(ΕΎϣ )ϥϛϟϭ ϪΗΎΣ ϡϟ έϳϐΗΗ ϰϟ ΔϟΎΣϟ Stopped
04132023 1149 PM 12
Thread Priority ) ( نفس في معه تشترك التي النياسب من لغيره بالنسبة أولوية أفضلية نيسب لكل
(Processالمهمة ) بأفضلية النياسب جميع إنشاء Normalيتم
ϑ λ ϭϟ ΔϣϳϘϟ
ΎϳϠόϟΔϳϠο ϓϷϪϟΏγϳϧϟ Highest
ϱΩΎόϟΏγϳϧϟϥϣϰϠϋΔϳϠο ϓϪϟΏγϳϧϟ AboveNormal
ΔϳΩΎϋΔϳϠο ϓϪϟΏγϳϧϟ Normal
ϱΩΎόϟΏγϳϧϟϥϣϰϧΩΔϳϠο ϓϪϟΏγϳϧϟ BelowNormal
ϪϟΏγϳϧϟϷΔϳϠο ϓΎϳϧΩϟ Lowest
04132023 1149 PM 13
الموارد على التنافسConcurrency
النياسب التطبيقات ذات ( Multithreaded Application)متعددة p جدا عظيمة فوائد
p أبدا p سهال p أمرا ليس النياسب إدارة ستكون النتائج فإن الذاكرة في مشترك غرض على العمل نيسبان حاول إذا
خاطئة الموارد على التنافس مشاكل لحل أساسين مفهومين على التعرف يجب
الحرجة المقاطع( Critical Sections )(القفلLock ) دخول لتحقيق طريقة واحد نيسبوهي الحرج المقطع إلى
مالحظات
) نحتاج ) التي الشيفرة الكود من جزء أصغر نقفل بحيث القفل استعمال عند الحذر علينا يجبالبرنامج ضمن حمايته إلى
المهام نطاق على ولكن التشغيل نظام قبل من ومطبقة موجودة هي األفكار هذه(Processes )النياسب نطاق على وسنراها
04132023 1149 PM 14
الحرجة المقاطع استخداموالقفل
Lock
read value from DB update value in RAMwriting value to DB
04132023 1149 PM 15
الحرجة المقاطع استخداموالقفل
Static int [] arr=new int [10]
Static int index++ if (indexgt=10) return ConsoleWriteLine(arr[index])
04132023 1149 PM 16
النياسب بين ThreadsالتزامنSynchronization
هما لسببين النياسب بين المزامنة إلى نحتاجمشتركة موارد استخدامالتواقت(Concurrency)
Thread B Globalx=4
Thread A
Globalx=3
call function
Func(Globalx )
04132023 1149 PM 17
التزامن SynchronizationتحقيقImplementation
من مال سحب بعمليات والقيام مصرفي حساب على نيسب من أكثر ولوج مسألةالرصيد
المثال بعرض تزامن سنقوم دون من تزامن مرة مع مرة و ( في تكون النياسب وبقية الغرض على قفل يضع الحرج المقطع إلى يدخل ما لحظة في واحد نيسب فقط
(انتظارحالة ( الحرج المقطع كامل تنفيذ من النيسب هذ ينتهي أن كاملة بعد مناقلة يمثل بتحريريقوم( والذي
القفل التشغيل نظام يقوم النياسب ثم أحد إنتظار بإختيار حالة في التي الحرج المقطع في للدخول
04132023 1149 PM 18
التزامن Synchronization Classesأصناف الصفInterlocked ( مناهج على الصنف هذه آمنة (methodيحتوي
(Safe ) العمليات اآلمنةلتقديم نياسب عدة بين المشتركة المتحوالت على هي المناهج أن( atomic )ذريةهذه عن المنهجأي عبارة مناقلةهو
(Transaction ) كامل بشكل تتم أن مقاطعة فإما المعالج دون من W أبدا تتم ال أن أو
المناهج هذه من
Increment - Decrement Exchange القديمة )األصليةالقيمة ويعيد متحولفي قيمةيضع للمتحول( CompareExchange
04132023 1149 PM 19
Parallel Programming Example من األعداد بجمع pولدينا n 1جمع نيسب كل يقوم حيث نيسب
من np 1األعداد
04132023 1149 PM 20
Semaphore Class المهام بين التزامن لتحقيق طريقة عن عبارة هو السيمافور )Processes (يمكن التشغيل نظام مستوى في p لتحقيق استعماله أيضا
النياسب بين التزامن
مثل رقم عن عبارة_ مورد على الحصول تستطيع التي النياسب من محدود عدد ي من أكثر ق[بل من عليها التنافس يتم التي الموارد من( Pool)حوض (أو مشترك)نيسب
الطابعة مثال
هامة عدد مالحظة هي السيمافور الصفر قيمة يساوي أو عن أكبر عددويعبرأن النياسب تستطيع إنتظار الموردعلى تحصلالتي دون من و مباشرة
04132023 1149 PM 21
Mutex Class (Mutual Exclusion)( الصف هذا بسيطة( Mutexيعطي يسمح للتزامنطريقة لنيسب بحيث
مع واحد الحرج المقطع إلى البقية بالدخول في ) إستبعاد تبقى النياسب بقيةالنيسب هذا يقوم أن إلى إنتظار ال حالة ( Mutexبتحرير
ال ( Lock - unlockآلية )Mutex يستعمل
04132023 1149 PM 22
اإلقفال حدوث تتجنب أن يمكن كيفبرنامجك( Deadlockالمتبادل) شيفرة في
نيسبين بين يحدث) Two Threads (إلى بحاجة النيسبين من كل عندما عمله يكمل حتى األخر من معطيات
عتبر من أعقد المشاكل التي واجهت مصمي نظم التشغيلWهذه المشكلة تالمهام على حلها تم مستوى على حلها لكن و (Processes)مستوى
المبرمج مسؤولية من هي(Threads)النياسب
المشكلة هذه تنتج الحقيقة في)DeadLock (األقفال إستخدام عن Locks ال إستخدام وعن Mutexp أيضا
مفرغة حلقات فيها تحدث ال بحيث النياسب متعددة تطبيقات تصميم iجدا الصعب من(DeadLocks)
04132023 1149 PM 23
Monitor Class( كائن واحد قفلNETفي( objectلكل نيسب قبل من عليه الحصول يتم الصفMonitor التالية المزايا يمللك
على- 1 الحصول ويتم بغرض الطلب( Monitor)المراقبمرتبطة عند2 الكود- ضمن مكان أي في استدعائه يمكن أي مقيد غيرالصنف- 3 هذا من غرض إنشاء يمكن ال
) نيسب ) من أكثر من إليه الوصول يتم غرضمتزامن كل أجل من القفل يملك وحيد نيسب( جاهزية لكي (Ready Queueرتل المعالج يختارها أن تنتظر التي النياسب يحوي
النياسب بقية استبعاد مع القفل على تحصل( إنتظار (Waiting Queueرتل إيقاظ إنتظارإشارة حالة في التي النياسب يحوي
القفل على الحصول لتستعيد أخر نيسب من
04132023 1149 PM 24
Monitor Class
04132023 1149 PM 25
Producer Consumere Example
04132023 1149 PM 8
الخلفية في تعمل التي Background النياسبThreads
( المهام من مجموعة يستعمل التشغيل الخلفية( Processesنظام في تعمل والتي(Background( )باسم ويندوز نظام في ( Windows Servicesوتسمىنظام ويندوز خدمات في _سمى LinuxUnixأما daemonsفت
األمام في تعمل التي المهام من أقل أفضلية لها يكون الخلفية في تعمل التي المهام يعمل معين نيسب نجعل أن يمكننا حيث النياسب على تطبيقها يمكن الفكرة نفس
الخلفية في( الخلفية في يعمل ما نيسب نجعل أن الخاصية( Backgroundيمكن طريق عن
IsBackground بالقيمة ضبطها يتم trueوالتي
( الخلفية النياسب أمامي( )Backgroundتنتهي نيسب أخر إنتهاء (forgroundعند
04132023 1149 PM 9
Thread Class الصنف نظام SystemThreadingThreadيمثل مستوى في نيسب
التشغيل الصنف في الموجود الخصائص Threadأهم
ϑ λ ϭϟ Δϳλ ΎΧϟ
ΩϳόΗ ϊ Οέϣ( Reference )ϰϟ Ώγϳϧϟ Ϋϔϧϣϟ Ύ˱ϳϟΎΣ CurrentThread
ΩϳόΗ true Ϋ ϥΎϛ Ώγϳϧϟ Ωϗ ΩΑ ϡϟϭ ϲϬΗϧϳ ΩόΑ IsAlive
ΩϳόΗ true Ϋ ϥΎϛ Ώγϳϧϟ ϝϣόϳ ϲϓ ΔϳϔϠΧϟ ISBackground
ΩϳόΗ ϭ ΩΩΣΗ( set or get )ϡγ Ώγϳϧϟ Name
ΩϳόΗ ϭ ΩΩΣΗ( set or get )ΔϳϠο ϓ Ώγϳϧϟ Priority
ΩϳόΗ ϭ ΩΩΣΗ( set or get )ΔϟΎΣ Ώγϳϧϟ ThreadState
04132023 1149 PM 10
Thread Class الصنف في الموجود المناهج Threadأهم
ϑ λ ϭϟ (ΔϘϳέρϟmethod) ΏγϳϧϟΫϳϔϧΗΑΫϳϔϧΗΑ ΩΑϟ Start
ϱέϭϓϝϛηΑΏγϳϧϟΫϳϔϧΗϲϬϧΗ Abort
ΔϟΎΣϲϓϥϭϛϳϱΫϟ Ώγϳϧϟϊ ρΎϘΗwaitSleepJoin Interrupt
ΫϳϔϧΗϲϬΗϧϳϰΗΣ )ΞϬϧϣϟΫϬϟϲϋΩΗγϣ˵ϟΏγϳϧϟ(ϥϳόϣΏγϳϧέΎυΗϧΏγϳϧϟΫϫ
Join
(ΓΩϭΩΣϣέϳ ΓέΗϔϟΏγϳϧϟϝϣϋ˯ΎΟέϏpause )-Εϗϣϑ ΎϘϳ - Suspend
(ϕΑΎγϟϊ ΑΎΗϟϝϣϋϝρΑΗSuspend) Resume
ΓΩΩΣϣΓέΗϔϟΏγϳϧϟ ϡϭϧΗ Sleep
04132023 1149 PM 11
النيسب Thread Statesحاالت ( التعداد ضمن موجودة وهي حاالت عدة أو حالة نيسب الم_سمى( EnumلكلThreadStateΔϣϳϘϟ ϒλϮϟ Running Ώγϳϧϟ ϝϣόϳ ϥϵ StopRequested Ώγϳϧϟ Ωϗ ϝΑϘΗγ ΓέΎη ϑ ΎϘϳ(Abort )SuspendRequested Ώγϳϧϟ Ωϗ ϝΑϘΗγ ΓέΎη ϑ ΎϘϳ Εϗϣ(pause )Background Ώγϳϧϟ ϝϣόϳ ϲϓ ΔϳϔϠΧϟ Unstarted Ώγϳϧϟ ϡΗ ϩΎηϧ ϥϛϟϭ ϡϟ ϡΗϳ ΫϳϔϧΗ ΞϬϧϣϟ Start)( Stopped Ώγϳϧϟ ϡΗ ϪϓΎϘϳ )ΕΎϣΐδϴϨϟ (ϲΎϬϧϞϜθΑ WaitSleepJoin Ώγϳϧϟ ˯ΎϋΩΗγϥο ϑ ϗϭΗϣwait ϭSleep ϭJoin Suspended Ώγϳϧϟ ϑ ϗϭΗϣ ϝϛηΑ Εϗϣ AbortRequested ϝϘϧΗϳ Ώγϳϧϟ ϰϟ ϩΫϫ ΔϟΎΣϟ ΎϣΩϧϋ ϥϭϛϧ Ωϗ ΎϧϳϋΩΗγ ΞϬϧϣϟ
Abort ΏγϳϧϠϟ ϥϛϟϭ Ϋϫ Ώγϳϧϟ ϡϟ ϝΑϘΗγϳ ΩόΑ ΓέΎη ϑ ΎϘϳϹ ϲΗϟϭ ϡΗϳ έϳΑόΗϟ ΎϬϧϋ ˯ΎϧΛΗγϹΎΑ( ThreadAbortException )ϱΫϟϭ ϲϬϧϳ ϝϣϋ Ϋϫ Ώγϳϧϟ
Aborted α ϔϧ ΔϟΎΣϟ ΔϘΑΎγϟ(AbortRequested) ϭ Ώγϳϧϟ Ωϗ ϑ ϗϭΗ(ΕΎϣ )ϥϛϟϭ ϪΗΎΣ ϡϟ έϳϐΗΗ ϰϟ ΔϟΎΣϟ Stopped
04132023 1149 PM 12
Thread Priority ) ( نفس في معه تشترك التي النياسب من لغيره بالنسبة أولوية أفضلية نيسب لكل
(Processالمهمة ) بأفضلية النياسب جميع إنشاء Normalيتم
ϑ λ ϭϟ ΔϣϳϘϟ
ΎϳϠόϟΔϳϠο ϓϷϪϟΏγϳϧϟ Highest
ϱΩΎόϟΏγϳϧϟϥϣϰϠϋΔϳϠο ϓϪϟΏγϳϧϟ AboveNormal
ΔϳΩΎϋΔϳϠο ϓϪϟΏγϳϧϟ Normal
ϱΩΎόϟΏγϳϧϟϥϣϰϧΩΔϳϠο ϓϪϟΏγϳϧϟ BelowNormal
ϪϟΏγϳϧϟϷΔϳϠο ϓΎϳϧΩϟ Lowest
04132023 1149 PM 13
الموارد على التنافسConcurrency
النياسب التطبيقات ذات ( Multithreaded Application)متعددة p جدا عظيمة فوائد
p أبدا p سهال p أمرا ليس النياسب إدارة ستكون النتائج فإن الذاكرة في مشترك غرض على العمل نيسبان حاول إذا
خاطئة الموارد على التنافس مشاكل لحل أساسين مفهومين على التعرف يجب
الحرجة المقاطع( Critical Sections )(القفلLock ) دخول لتحقيق طريقة واحد نيسبوهي الحرج المقطع إلى
مالحظات
) نحتاج ) التي الشيفرة الكود من جزء أصغر نقفل بحيث القفل استعمال عند الحذر علينا يجبالبرنامج ضمن حمايته إلى
المهام نطاق على ولكن التشغيل نظام قبل من ومطبقة موجودة هي األفكار هذه(Processes )النياسب نطاق على وسنراها
04132023 1149 PM 14
الحرجة المقاطع استخداموالقفل
Lock
read value from DB update value in RAMwriting value to DB
04132023 1149 PM 15
الحرجة المقاطع استخداموالقفل
Static int [] arr=new int [10]
Static int index++ if (indexgt=10) return ConsoleWriteLine(arr[index])
04132023 1149 PM 16
النياسب بين ThreadsالتزامنSynchronization
هما لسببين النياسب بين المزامنة إلى نحتاجمشتركة موارد استخدامالتواقت(Concurrency)
Thread B Globalx=4
Thread A
Globalx=3
call function
Func(Globalx )
04132023 1149 PM 17
التزامن SynchronizationتحقيقImplementation
من مال سحب بعمليات والقيام مصرفي حساب على نيسب من أكثر ولوج مسألةالرصيد
المثال بعرض تزامن سنقوم دون من تزامن مرة مع مرة و ( في تكون النياسب وبقية الغرض على قفل يضع الحرج المقطع إلى يدخل ما لحظة في واحد نيسب فقط
(انتظارحالة ( الحرج المقطع كامل تنفيذ من النيسب هذ ينتهي أن كاملة بعد مناقلة يمثل بتحريريقوم( والذي
القفل التشغيل نظام يقوم النياسب ثم أحد إنتظار بإختيار حالة في التي الحرج المقطع في للدخول
04132023 1149 PM 18
التزامن Synchronization Classesأصناف الصفInterlocked ( مناهج على الصنف هذه آمنة (methodيحتوي
(Safe ) العمليات اآلمنةلتقديم نياسب عدة بين المشتركة المتحوالت على هي المناهج أن( atomic )ذريةهذه عن المنهجأي عبارة مناقلةهو
(Transaction ) كامل بشكل تتم أن مقاطعة فإما المعالج دون من W أبدا تتم ال أن أو
المناهج هذه من
Increment - Decrement Exchange القديمة )األصليةالقيمة ويعيد متحولفي قيمةيضع للمتحول( CompareExchange
04132023 1149 PM 19
Parallel Programming Example من األعداد بجمع pولدينا n 1جمع نيسب كل يقوم حيث نيسب
من np 1األعداد
04132023 1149 PM 20
Semaphore Class المهام بين التزامن لتحقيق طريقة عن عبارة هو السيمافور )Processes (يمكن التشغيل نظام مستوى في p لتحقيق استعماله أيضا
النياسب بين التزامن
مثل رقم عن عبارة_ مورد على الحصول تستطيع التي النياسب من محدود عدد ي من أكثر ق[بل من عليها التنافس يتم التي الموارد من( Pool)حوض (أو مشترك)نيسب
الطابعة مثال
هامة عدد مالحظة هي السيمافور الصفر قيمة يساوي أو عن أكبر عددويعبرأن النياسب تستطيع إنتظار الموردعلى تحصلالتي دون من و مباشرة
04132023 1149 PM 21
Mutex Class (Mutual Exclusion)( الصف هذا بسيطة( Mutexيعطي يسمح للتزامنطريقة لنيسب بحيث
مع واحد الحرج المقطع إلى البقية بالدخول في ) إستبعاد تبقى النياسب بقيةالنيسب هذا يقوم أن إلى إنتظار ال حالة ( Mutexبتحرير
ال ( Lock - unlockآلية )Mutex يستعمل
04132023 1149 PM 22
اإلقفال حدوث تتجنب أن يمكن كيفبرنامجك( Deadlockالمتبادل) شيفرة في
نيسبين بين يحدث) Two Threads (إلى بحاجة النيسبين من كل عندما عمله يكمل حتى األخر من معطيات
عتبر من أعقد المشاكل التي واجهت مصمي نظم التشغيلWهذه المشكلة تالمهام على حلها تم مستوى على حلها لكن و (Processes)مستوى
المبرمج مسؤولية من هي(Threads)النياسب
المشكلة هذه تنتج الحقيقة في)DeadLock (األقفال إستخدام عن Locks ال إستخدام وعن Mutexp أيضا
مفرغة حلقات فيها تحدث ال بحيث النياسب متعددة تطبيقات تصميم iجدا الصعب من(DeadLocks)
04132023 1149 PM 23
Monitor Class( كائن واحد قفلNETفي( objectلكل نيسب قبل من عليه الحصول يتم الصفMonitor التالية المزايا يمللك
على- 1 الحصول ويتم بغرض الطلب( Monitor)المراقبمرتبطة عند2 الكود- ضمن مكان أي في استدعائه يمكن أي مقيد غيرالصنف- 3 هذا من غرض إنشاء يمكن ال
) نيسب ) من أكثر من إليه الوصول يتم غرضمتزامن كل أجل من القفل يملك وحيد نيسب( جاهزية لكي (Ready Queueرتل المعالج يختارها أن تنتظر التي النياسب يحوي
النياسب بقية استبعاد مع القفل على تحصل( إنتظار (Waiting Queueرتل إيقاظ إنتظارإشارة حالة في التي النياسب يحوي
القفل على الحصول لتستعيد أخر نيسب من
04132023 1149 PM 24
Monitor Class
04132023 1149 PM 25
Producer Consumere Example
04132023 1149 PM 9
Thread Class الصنف نظام SystemThreadingThreadيمثل مستوى في نيسب
التشغيل الصنف في الموجود الخصائص Threadأهم
ϑ λ ϭϟ Δϳλ ΎΧϟ
ΩϳόΗ ϊ Οέϣ( Reference )ϰϟ Ώγϳϧϟ Ϋϔϧϣϟ Ύ˱ϳϟΎΣ CurrentThread
ΩϳόΗ true Ϋ ϥΎϛ Ώγϳϧϟ Ωϗ ΩΑ ϡϟϭ ϲϬΗϧϳ ΩόΑ IsAlive
ΩϳόΗ true Ϋ ϥΎϛ Ώγϳϧϟ ϝϣόϳ ϲϓ ΔϳϔϠΧϟ ISBackground
ΩϳόΗ ϭ ΩΩΣΗ( set or get )ϡγ Ώγϳϧϟ Name
ΩϳόΗ ϭ ΩΩΣΗ( set or get )ΔϳϠο ϓ Ώγϳϧϟ Priority
ΩϳόΗ ϭ ΩΩΣΗ( set or get )ΔϟΎΣ Ώγϳϧϟ ThreadState
04132023 1149 PM 10
Thread Class الصنف في الموجود المناهج Threadأهم
ϑ λ ϭϟ (ΔϘϳέρϟmethod) ΏγϳϧϟΫϳϔϧΗΑΫϳϔϧΗΑ ΩΑϟ Start
ϱέϭϓϝϛηΑΏγϳϧϟΫϳϔϧΗϲϬϧΗ Abort
ΔϟΎΣϲϓϥϭϛϳϱΫϟ Ώγϳϧϟϊ ρΎϘΗwaitSleepJoin Interrupt
ΫϳϔϧΗϲϬΗϧϳϰΗΣ )ΞϬϧϣϟΫϬϟϲϋΩΗγϣ˵ϟΏγϳϧϟ(ϥϳόϣΏγϳϧέΎυΗϧΏγϳϧϟΫϫ
Join
(ΓΩϭΩΣϣέϳ ΓέΗϔϟΏγϳϧϟϝϣϋ˯ΎΟέϏpause )-Εϗϣϑ ΎϘϳ - Suspend
(ϕΑΎγϟϊ ΑΎΗϟϝϣϋϝρΑΗSuspend) Resume
ΓΩΩΣϣΓέΗϔϟΏγϳϧϟ ϡϭϧΗ Sleep
04132023 1149 PM 11
النيسب Thread Statesحاالت ( التعداد ضمن موجودة وهي حاالت عدة أو حالة نيسب الم_سمى( EnumلكلThreadStateΔϣϳϘϟ ϒλϮϟ Running Ώγϳϧϟ ϝϣόϳ ϥϵ StopRequested Ώγϳϧϟ Ωϗ ϝΑϘΗγ ΓέΎη ϑ ΎϘϳ(Abort )SuspendRequested Ώγϳϧϟ Ωϗ ϝΑϘΗγ ΓέΎη ϑ ΎϘϳ Εϗϣ(pause )Background Ώγϳϧϟ ϝϣόϳ ϲϓ ΔϳϔϠΧϟ Unstarted Ώγϳϧϟ ϡΗ ϩΎηϧ ϥϛϟϭ ϡϟ ϡΗϳ ΫϳϔϧΗ ΞϬϧϣϟ Start)( Stopped Ώγϳϧϟ ϡΗ ϪϓΎϘϳ )ΕΎϣΐδϴϨϟ (ϲΎϬϧϞϜθΑ WaitSleepJoin Ώγϳϧϟ ˯ΎϋΩΗγϥο ϑ ϗϭΗϣwait ϭSleep ϭJoin Suspended Ώγϳϧϟ ϑ ϗϭΗϣ ϝϛηΑ Εϗϣ AbortRequested ϝϘϧΗϳ Ώγϳϧϟ ϰϟ ϩΫϫ ΔϟΎΣϟ ΎϣΩϧϋ ϥϭϛϧ Ωϗ ΎϧϳϋΩΗγ ΞϬϧϣϟ
Abort ΏγϳϧϠϟ ϥϛϟϭ Ϋϫ Ώγϳϧϟ ϡϟ ϝΑϘΗγϳ ΩόΑ ΓέΎη ϑ ΎϘϳϹ ϲΗϟϭ ϡΗϳ έϳΑόΗϟ ΎϬϧϋ ˯ΎϧΛΗγϹΎΑ( ThreadAbortException )ϱΫϟϭ ϲϬϧϳ ϝϣϋ Ϋϫ Ώγϳϧϟ
Aborted α ϔϧ ΔϟΎΣϟ ΔϘΑΎγϟ(AbortRequested) ϭ Ώγϳϧϟ Ωϗ ϑ ϗϭΗ(ΕΎϣ )ϥϛϟϭ ϪΗΎΣ ϡϟ έϳϐΗΗ ϰϟ ΔϟΎΣϟ Stopped
04132023 1149 PM 12
Thread Priority ) ( نفس في معه تشترك التي النياسب من لغيره بالنسبة أولوية أفضلية نيسب لكل
(Processالمهمة ) بأفضلية النياسب جميع إنشاء Normalيتم
ϑ λ ϭϟ ΔϣϳϘϟ
ΎϳϠόϟΔϳϠο ϓϷϪϟΏγϳϧϟ Highest
ϱΩΎόϟΏγϳϧϟϥϣϰϠϋΔϳϠο ϓϪϟΏγϳϧϟ AboveNormal
ΔϳΩΎϋΔϳϠο ϓϪϟΏγϳϧϟ Normal
ϱΩΎόϟΏγϳϧϟϥϣϰϧΩΔϳϠο ϓϪϟΏγϳϧϟ BelowNormal
ϪϟΏγϳϧϟϷΔϳϠο ϓΎϳϧΩϟ Lowest
04132023 1149 PM 13
الموارد على التنافسConcurrency
النياسب التطبيقات ذات ( Multithreaded Application)متعددة p جدا عظيمة فوائد
p أبدا p سهال p أمرا ليس النياسب إدارة ستكون النتائج فإن الذاكرة في مشترك غرض على العمل نيسبان حاول إذا
خاطئة الموارد على التنافس مشاكل لحل أساسين مفهومين على التعرف يجب
الحرجة المقاطع( Critical Sections )(القفلLock ) دخول لتحقيق طريقة واحد نيسبوهي الحرج المقطع إلى
مالحظات
) نحتاج ) التي الشيفرة الكود من جزء أصغر نقفل بحيث القفل استعمال عند الحذر علينا يجبالبرنامج ضمن حمايته إلى
المهام نطاق على ولكن التشغيل نظام قبل من ومطبقة موجودة هي األفكار هذه(Processes )النياسب نطاق على وسنراها
04132023 1149 PM 14
الحرجة المقاطع استخداموالقفل
Lock
read value from DB update value in RAMwriting value to DB
04132023 1149 PM 15
الحرجة المقاطع استخداموالقفل
Static int [] arr=new int [10]
Static int index++ if (indexgt=10) return ConsoleWriteLine(arr[index])
04132023 1149 PM 16
النياسب بين ThreadsالتزامنSynchronization
هما لسببين النياسب بين المزامنة إلى نحتاجمشتركة موارد استخدامالتواقت(Concurrency)
Thread B Globalx=4
Thread A
Globalx=3
call function
Func(Globalx )
04132023 1149 PM 17
التزامن SynchronizationتحقيقImplementation
من مال سحب بعمليات والقيام مصرفي حساب على نيسب من أكثر ولوج مسألةالرصيد
المثال بعرض تزامن سنقوم دون من تزامن مرة مع مرة و ( في تكون النياسب وبقية الغرض على قفل يضع الحرج المقطع إلى يدخل ما لحظة في واحد نيسب فقط
(انتظارحالة ( الحرج المقطع كامل تنفيذ من النيسب هذ ينتهي أن كاملة بعد مناقلة يمثل بتحريريقوم( والذي
القفل التشغيل نظام يقوم النياسب ثم أحد إنتظار بإختيار حالة في التي الحرج المقطع في للدخول
04132023 1149 PM 18
التزامن Synchronization Classesأصناف الصفInterlocked ( مناهج على الصنف هذه آمنة (methodيحتوي
(Safe ) العمليات اآلمنةلتقديم نياسب عدة بين المشتركة المتحوالت على هي المناهج أن( atomic )ذريةهذه عن المنهجأي عبارة مناقلةهو
(Transaction ) كامل بشكل تتم أن مقاطعة فإما المعالج دون من W أبدا تتم ال أن أو
المناهج هذه من
Increment - Decrement Exchange القديمة )األصليةالقيمة ويعيد متحولفي قيمةيضع للمتحول( CompareExchange
04132023 1149 PM 19
Parallel Programming Example من األعداد بجمع pولدينا n 1جمع نيسب كل يقوم حيث نيسب
من np 1األعداد
04132023 1149 PM 20
Semaphore Class المهام بين التزامن لتحقيق طريقة عن عبارة هو السيمافور )Processes (يمكن التشغيل نظام مستوى في p لتحقيق استعماله أيضا
النياسب بين التزامن
مثل رقم عن عبارة_ مورد على الحصول تستطيع التي النياسب من محدود عدد ي من أكثر ق[بل من عليها التنافس يتم التي الموارد من( Pool)حوض (أو مشترك)نيسب
الطابعة مثال
هامة عدد مالحظة هي السيمافور الصفر قيمة يساوي أو عن أكبر عددويعبرأن النياسب تستطيع إنتظار الموردعلى تحصلالتي دون من و مباشرة
04132023 1149 PM 21
Mutex Class (Mutual Exclusion)( الصف هذا بسيطة( Mutexيعطي يسمح للتزامنطريقة لنيسب بحيث
مع واحد الحرج المقطع إلى البقية بالدخول في ) إستبعاد تبقى النياسب بقيةالنيسب هذا يقوم أن إلى إنتظار ال حالة ( Mutexبتحرير
ال ( Lock - unlockآلية )Mutex يستعمل
04132023 1149 PM 22
اإلقفال حدوث تتجنب أن يمكن كيفبرنامجك( Deadlockالمتبادل) شيفرة في
نيسبين بين يحدث) Two Threads (إلى بحاجة النيسبين من كل عندما عمله يكمل حتى األخر من معطيات
عتبر من أعقد المشاكل التي واجهت مصمي نظم التشغيلWهذه المشكلة تالمهام على حلها تم مستوى على حلها لكن و (Processes)مستوى
المبرمج مسؤولية من هي(Threads)النياسب
المشكلة هذه تنتج الحقيقة في)DeadLock (األقفال إستخدام عن Locks ال إستخدام وعن Mutexp أيضا
مفرغة حلقات فيها تحدث ال بحيث النياسب متعددة تطبيقات تصميم iجدا الصعب من(DeadLocks)
04132023 1149 PM 23
Monitor Class( كائن واحد قفلNETفي( objectلكل نيسب قبل من عليه الحصول يتم الصفMonitor التالية المزايا يمللك
على- 1 الحصول ويتم بغرض الطلب( Monitor)المراقبمرتبطة عند2 الكود- ضمن مكان أي في استدعائه يمكن أي مقيد غيرالصنف- 3 هذا من غرض إنشاء يمكن ال
) نيسب ) من أكثر من إليه الوصول يتم غرضمتزامن كل أجل من القفل يملك وحيد نيسب( جاهزية لكي (Ready Queueرتل المعالج يختارها أن تنتظر التي النياسب يحوي
النياسب بقية استبعاد مع القفل على تحصل( إنتظار (Waiting Queueرتل إيقاظ إنتظارإشارة حالة في التي النياسب يحوي
القفل على الحصول لتستعيد أخر نيسب من
04132023 1149 PM 24
Monitor Class
04132023 1149 PM 25
Producer Consumere Example
04132023 1149 PM 10
Thread Class الصنف في الموجود المناهج Threadأهم
ϑ λ ϭϟ (ΔϘϳέρϟmethod) ΏγϳϧϟΫϳϔϧΗΑΫϳϔϧΗΑ ΩΑϟ Start
ϱέϭϓϝϛηΑΏγϳϧϟΫϳϔϧΗϲϬϧΗ Abort
ΔϟΎΣϲϓϥϭϛϳϱΫϟ Ώγϳϧϟϊ ρΎϘΗwaitSleepJoin Interrupt
ΫϳϔϧΗϲϬΗϧϳϰΗΣ )ΞϬϧϣϟΫϬϟϲϋΩΗγϣ˵ϟΏγϳϧϟ(ϥϳόϣΏγϳϧέΎυΗϧΏγϳϧϟΫϫ
Join
(ΓΩϭΩΣϣέϳ ΓέΗϔϟΏγϳϧϟϝϣϋ˯ΎΟέϏpause )-Εϗϣϑ ΎϘϳ - Suspend
(ϕΑΎγϟϊ ΑΎΗϟϝϣϋϝρΑΗSuspend) Resume
ΓΩΩΣϣΓέΗϔϟΏγϳϧϟ ϡϭϧΗ Sleep
04132023 1149 PM 11
النيسب Thread Statesحاالت ( التعداد ضمن موجودة وهي حاالت عدة أو حالة نيسب الم_سمى( EnumلكلThreadStateΔϣϳϘϟ ϒλϮϟ Running Ώγϳϧϟ ϝϣόϳ ϥϵ StopRequested Ώγϳϧϟ Ωϗ ϝΑϘΗγ ΓέΎη ϑ ΎϘϳ(Abort )SuspendRequested Ώγϳϧϟ Ωϗ ϝΑϘΗγ ΓέΎη ϑ ΎϘϳ Εϗϣ(pause )Background Ώγϳϧϟ ϝϣόϳ ϲϓ ΔϳϔϠΧϟ Unstarted Ώγϳϧϟ ϡΗ ϩΎηϧ ϥϛϟϭ ϡϟ ϡΗϳ ΫϳϔϧΗ ΞϬϧϣϟ Start)( Stopped Ώγϳϧϟ ϡΗ ϪϓΎϘϳ )ΕΎϣΐδϴϨϟ (ϲΎϬϧϞϜθΑ WaitSleepJoin Ώγϳϧϟ ˯ΎϋΩΗγϥο ϑ ϗϭΗϣwait ϭSleep ϭJoin Suspended Ώγϳϧϟ ϑ ϗϭΗϣ ϝϛηΑ Εϗϣ AbortRequested ϝϘϧΗϳ Ώγϳϧϟ ϰϟ ϩΫϫ ΔϟΎΣϟ ΎϣΩϧϋ ϥϭϛϧ Ωϗ ΎϧϳϋΩΗγ ΞϬϧϣϟ
Abort ΏγϳϧϠϟ ϥϛϟϭ Ϋϫ Ώγϳϧϟ ϡϟ ϝΑϘΗγϳ ΩόΑ ΓέΎη ϑ ΎϘϳϹ ϲΗϟϭ ϡΗϳ έϳΑόΗϟ ΎϬϧϋ ˯ΎϧΛΗγϹΎΑ( ThreadAbortException )ϱΫϟϭ ϲϬϧϳ ϝϣϋ Ϋϫ Ώγϳϧϟ
Aborted α ϔϧ ΔϟΎΣϟ ΔϘΑΎγϟ(AbortRequested) ϭ Ώγϳϧϟ Ωϗ ϑ ϗϭΗ(ΕΎϣ )ϥϛϟϭ ϪΗΎΣ ϡϟ έϳϐΗΗ ϰϟ ΔϟΎΣϟ Stopped
04132023 1149 PM 12
Thread Priority ) ( نفس في معه تشترك التي النياسب من لغيره بالنسبة أولوية أفضلية نيسب لكل
(Processالمهمة ) بأفضلية النياسب جميع إنشاء Normalيتم
ϑ λ ϭϟ ΔϣϳϘϟ
ΎϳϠόϟΔϳϠο ϓϷϪϟΏγϳϧϟ Highest
ϱΩΎόϟΏγϳϧϟϥϣϰϠϋΔϳϠο ϓϪϟΏγϳϧϟ AboveNormal
ΔϳΩΎϋΔϳϠο ϓϪϟΏγϳϧϟ Normal
ϱΩΎόϟΏγϳϧϟϥϣϰϧΩΔϳϠο ϓϪϟΏγϳϧϟ BelowNormal
ϪϟΏγϳϧϟϷΔϳϠο ϓΎϳϧΩϟ Lowest
04132023 1149 PM 13
الموارد على التنافسConcurrency
النياسب التطبيقات ذات ( Multithreaded Application)متعددة p جدا عظيمة فوائد
p أبدا p سهال p أمرا ليس النياسب إدارة ستكون النتائج فإن الذاكرة في مشترك غرض على العمل نيسبان حاول إذا
خاطئة الموارد على التنافس مشاكل لحل أساسين مفهومين على التعرف يجب
الحرجة المقاطع( Critical Sections )(القفلLock ) دخول لتحقيق طريقة واحد نيسبوهي الحرج المقطع إلى
مالحظات
) نحتاج ) التي الشيفرة الكود من جزء أصغر نقفل بحيث القفل استعمال عند الحذر علينا يجبالبرنامج ضمن حمايته إلى
المهام نطاق على ولكن التشغيل نظام قبل من ومطبقة موجودة هي األفكار هذه(Processes )النياسب نطاق على وسنراها
04132023 1149 PM 14
الحرجة المقاطع استخداموالقفل
Lock
read value from DB update value in RAMwriting value to DB
04132023 1149 PM 15
الحرجة المقاطع استخداموالقفل
Static int [] arr=new int [10]
Static int index++ if (indexgt=10) return ConsoleWriteLine(arr[index])
04132023 1149 PM 16
النياسب بين ThreadsالتزامنSynchronization
هما لسببين النياسب بين المزامنة إلى نحتاجمشتركة موارد استخدامالتواقت(Concurrency)
Thread B Globalx=4
Thread A
Globalx=3
call function
Func(Globalx )
04132023 1149 PM 17
التزامن SynchronizationتحقيقImplementation
من مال سحب بعمليات والقيام مصرفي حساب على نيسب من أكثر ولوج مسألةالرصيد
المثال بعرض تزامن سنقوم دون من تزامن مرة مع مرة و ( في تكون النياسب وبقية الغرض على قفل يضع الحرج المقطع إلى يدخل ما لحظة في واحد نيسب فقط
(انتظارحالة ( الحرج المقطع كامل تنفيذ من النيسب هذ ينتهي أن كاملة بعد مناقلة يمثل بتحريريقوم( والذي
القفل التشغيل نظام يقوم النياسب ثم أحد إنتظار بإختيار حالة في التي الحرج المقطع في للدخول
04132023 1149 PM 18
التزامن Synchronization Classesأصناف الصفInterlocked ( مناهج على الصنف هذه آمنة (methodيحتوي
(Safe ) العمليات اآلمنةلتقديم نياسب عدة بين المشتركة المتحوالت على هي المناهج أن( atomic )ذريةهذه عن المنهجأي عبارة مناقلةهو
(Transaction ) كامل بشكل تتم أن مقاطعة فإما المعالج دون من W أبدا تتم ال أن أو
المناهج هذه من
Increment - Decrement Exchange القديمة )األصليةالقيمة ويعيد متحولفي قيمةيضع للمتحول( CompareExchange
04132023 1149 PM 19
Parallel Programming Example من األعداد بجمع pولدينا n 1جمع نيسب كل يقوم حيث نيسب
من np 1األعداد
04132023 1149 PM 20
Semaphore Class المهام بين التزامن لتحقيق طريقة عن عبارة هو السيمافور )Processes (يمكن التشغيل نظام مستوى في p لتحقيق استعماله أيضا
النياسب بين التزامن
مثل رقم عن عبارة_ مورد على الحصول تستطيع التي النياسب من محدود عدد ي من أكثر ق[بل من عليها التنافس يتم التي الموارد من( Pool)حوض (أو مشترك)نيسب
الطابعة مثال
هامة عدد مالحظة هي السيمافور الصفر قيمة يساوي أو عن أكبر عددويعبرأن النياسب تستطيع إنتظار الموردعلى تحصلالتي دون من و مباشرة
04132023 1149 PM 21
Mutex Class (Mutual Exclusion)( الصف هذا بسيطة( Mutexيعطي يسمح للتزامنطريقة لنيسب بحيث
مع واحد الحرج المقطع إلى البقية بالدخول في ) إستبعاد تبقى النياسب بقيةالنيسب هذا يقوم أن إلى إنتظار ال حالة ( Mutexبتحرير
ال ( Lock - unlockآلية )Mutex يستعمل
04132023 1149 PM 22
اإلقفال حدوث تتجنب أن يمكن كيفبرنامجك( Deadlockالمتبادل) شيفرة في
نيسبين بين يحدث) Two Threads (إلى بحاجة النيسبين من كل عندما عمله يكمل حتى األخر من معطيات
عتبر من أعقد المشاكل التي واجهت مصمي نظم التشغيلWهذه المشكلة تالمهام على حلها تم مستوى على حلها لكن و (Processes)مستوى
المبرمج مسؤولية من هي(Threads)النياسب
المشكلة هذه تنتج الحقيقة في)DeadLock (األقفال إستخدام عن Locks ال إستخدام وعن Mutexp أيضا
مفرغة حلقات فيها تحدث ال بحيث النياسب متعددة تطبيقات تصميم iجدا الصعب من(DeadLocks)
04132023 1149 PM 23
Monitor Class( كائن واحد قفلNETفي( objectلكل نيسب قبل من عليه الحصول يتم الصفMonitor التالية المزايا يمللك
على- 1 الحصول ويتم بغرض الطلب( Monitor)المراقبمرتبطة عند2 الكود- ضمن مكان أي في استدعائه يمكن أي مقيد غيرالصنف- 3 هذا من غرض إنشاء يمكن ال
) نيسب ) من أكثر من إليه الوصول يتم غرضمتزامن كل أجل من القفل يملك وحيد نيسب( جاهزية لكي (Ready Queueرتل المعالج يختارها أن تنتظر التي النياسب يحوي
النياسب بقية استبعاد مع القفل على تحصل( إنتظار (Waiting Queueرتل إيقاظ إنتظارإشارة حالة في التي النياسب يحوي
القفل على الحصول لتستعيد أخر نيسب من
04132023 1149 PM 24
Monitor Class
04132023 1149 PM 25
Producer Consumere Example
04132023 1149 PM 11
النيسب Thread Statesحاالت ( التعداد ضمن موجودة وهي حاالت عدة أو حالة نيسب الم_سمى( EnumلكلThreadStateΔϣϳϘϟ ϒλϮϟ Running Ώγϳϧϟ ϝϣόϳ ϥϵ StopRequested Ώγϳϧϟ Ωϗ ϝΑϘΗγ ΓέΎη ϑ ΎϘϳ(Abort )SuspendRequested Ώγϳϧϟ Ωϗ ϝΑϘΗγ ΓέΎη ϑ ΎϘϳ Εϗϣ(pause )Background Ώγϳϧϟ ϝϣόϳ ϲϓ ΔϳϔϠΧϟ Unstarted Ώγϳϧϟ ϡΗ ϩΎηϧ ϥϛϟϭ ϡϟ ϡΗϳ ΫϳϔϧΗ ΞϬϧϣϟ Start)( Stopped Ώγϳϧϟ ϡΗ ϪϓΎϘϳ )ΕΎϣΐδϴϨϟ (ϲΎϬϧϞϜθΑ WaitSleepJoin Ώγϳϧϟ ˯ΎϋΩΗγϥο ϑ ϗϭΗϣwait ϭSleep ϭJoin Suspended Ώγϳϧϟ ϑ ϗϭΗϣ ϝϛηΑ Εϗϣ AbortRequested ϝϘϧΗϳ Ώγϳϧϟ ϰϟ ϩΫϫ ΔϟΎΣϟ ΎϣΩϧϋ ϥϭϛϧ Ωϗ ΎϧϳϋΩΗγ ΞϬϧϣϟ
Abort ΏγϳϧϠϟ ϥϛϟϭ Ϋϫ Ώγϳϧϟ ϡϟ ϝΑϘΗγϳ ΩόΑ ΓέΎη ϑ ΎϘϳϹ ϲΗϟϭ ϡΗϳ έϳΑόΗϟ ΎϬϧϋ ˯ΎϧΛΗγϹΎΑ( ThreadAbortException )ϱΫϟϭ ϲϬϧϳ ϝϣϋ Ϋϫ Ώγϳϧϟ
Aborted α ϔϧ ΔϟΎΣϟ ΔϘΑΎγϟ(AbortRequested) ϭ Ώγϳϧϟ Ωϗ ϑ ϗϭΗ(ΕΎϣ )ϥϛϟϭ ϪΗΎΣ ϡϟ έϳϐΗΗ ϰϟ ΔϟΎΣϟ Stopped
04132023 1149 PM 12
Thread Priority ) ( نفس في معه تشترك التي النياسب من لغيره بالنسبة أولوية أفضلية نيسب لكل
(Processالمهمة ) بأفضلية النياسب جميع إنشاء Normalيتم
ϑ λ ϭϟ ΔϣϳϘϟ
ΎϳϠόϟΔϳϠο ϓϷϪϟΏγϳϧϟ Highest
ϱΩΎόϟΏγϳϧϟϥϣϰϠϋΔϳϠο ϓϪϟΏγϳϧϟ AboveNormal
ΔϳΩΎϋΔϳϠο ϓϪϟΏγϳϧϟ Normal
ϱΩΎόϟΏγϳϧϟϥϣϰϧΩΔϳϠο ϓϪϟΏγϳϧϟ BelowNormal
ϪϟΏγϳϧϟϷΔϳϠο ϓΎϳϧΩϟ Lowest
04132023 1149 PM 13
الموارد على التنافسConcurrency
النياسب التطبيقات ذات ( Multithreaded Application)متعددة p جدا عظيمة فوائد
p أبدا p سهال p أمرا ليس النياسب إدارة ستكون النتائج فإن الذاكرة في مشترك غرض على العمل نيسبان حاول إذا
خاطئة الموارد على التنافس مشاكل لحل أساسين مفهومين على التعرف يجب
الحرجة المقاطع( Critical Sections )(القفلLock ) دخول لتحقيق طريقة واحد نيسبوهي الحرج المقطع إلى
مالحظات
) نحتاج ) التي الشيفرة الكود من جزء أصغر نقفل بحيث القفل استعمال عند الحذر علينا يجبالبرنامج ضمن حمايته إلى
المهام نطاق على ولكن التشغيل نظام قبل من ومطبقة موجودة هي األفكار هذه(Processes )النياسب نطاق على وسنراها
04132023 1149 PM 14
الحرجة المقاطع استخداموالقفل
Lock
read value from DB update value in RAMwriting value to DB
04132023 1149 PM 15
الحرجة المقاطع استخداموالقفل
Static int [] arr=new int [10]
Static int index++ if (indexgt=10) return ConsoleWriteLine(arr[index])
04132023 1149 PM 16
النياسب بين ThreadsالتزامنSynchronization
هما لسببين النياسب بين المزامنة إلى نحتاجمشتركة موارد استخدامالتواقت(Concurrency)
Thread B Globalx=4
Thread A
Globalx=3
call function
Func(Globalx )
04132023 1149 PM 17
التزامن SynchronizationتحقيقImplementation
من مال سحب بعمليات والقيام مصرفي حساب على نيسب من أكثر ولوج مسألةالرصيد
المثال بعرض تزامن سنقوم دون من تزامن مرة مع مرة و ( في تكون النياسب وبقية الغرض على قفل يضع الحرج المقطع إلى يدخل ما لحظة في واحد نيسب فقط
(انتظارحالة ( الحرج المقطع كامل تنفيذ من النيسب هذ ينتهي أن كاملة بعد مناقلة يمثل بتحريريقوم( والذي
القفل التشغيل نظام يقوم النياسب ثم أحد إنتظار بإختيار حالة في التي الحرج المقطع في للدخول
04132023 1149 PM 18
التزامن Synchronization Classesأصناف الصفInterlocked ( مناهج على الصنف هذه آمنة (methodيحتوي
(Safe ) العمليات اآلمنةلتقديم نياسب عدة بين المشتركة المتحوالت على هي المناهج أن( atomic )ذريةهذه عن المنهجأي عبارة مناقلةهو
(Transaction ) كامل بشكل تتم أن مقاطعة فإما المعالج دون من W أبدا تتم ال أن أو
المناهج هذه من
Increment - Decrement Exchange القديمة )األصليةالقيمة ويعيد متحولفي قيمةيضع للمتحول( CompareExchange
04132023 1149 PM 19
Parallel Programming Example من األعداد بجمع pولدينا n 1جمع نيسب كل يقوم حيث نيسب
من np 1األعداد
04132023 1149 PM 20
Semaphore Class المهام بين التزامن لتحقيق طريقة عن عبارة هو السيمافور )Processes (يمكن التشغيل نظام مستوى في p لتحقيق استعماله أيضا
النياسب بين التزامن
مثل رقم عن عبارة_ مورد على الحصول تستطيع التي النياسب من محدود عدد ي من أكثر ق[بل من عليها التنافس يتم التي الموارد من( Pool)حوض (أو مشترك)نيسب
الطابعة مثال
هامة عدد مالحظة هي السيمافور الصفر قيمة يساوي أو عن أكبر عددويعبرأن النياسب تستطيع إنتظار الموردعلى تحصلالتي دون من و مباشرة
04132023 1149 PM 21
Mutex Class (Mutual Exclusion)( الصف هذا بسيطة( Mutexيعطي يسمح للتزامنطريقة لنيسب بحيث
مع واحد الحرج المقطع إلى البقية بالدخول في ) إستبعاد تبقى النياسب بقيةالنيسب هذا يقوم أن إلى إنتظار ال حالة ( Mutexبتحرير
ال ( Lock - unlockآلية )Mutex يستعمل
04132023 1149 PM 22
اإلقفال حدوث تتجنب أن يمكن كيفبرنامجك( Deadlockالمتبادل) شيفرة في
نيسبين بين يحدث) Two Threads (إلى بحاجة النيسبين من كل عندما عمله يكمل حتى األخر من معطيات
عتبر من أعقد المشاكل التي واجهت مصمي نظم التشغيلWهذه المشكلة تالمهام على حلها تم مستوى على حلها لكن و (Processes)مستوى
المبرمج مسؤولية من هي(Threads)النياسب
المشكلة هذه تنتج الحقيقة في)DeadLock (األقفال إستخدام عن Locks ال إستخدام وعن Mutexp أيضا
مفرغة حلقات فيها تحدث ال بحيث النياسب متعددة تطبيقات تصميم iجدا الصعب من(DeadLocks)
04132023 1149 PM 23
Monitor Class( كائن واحد قفلNETفي( objectلكل نيسب قبل من عليه الحصول يتم الصفMonitor التالية المزايا يمللك
على- 1 الحصول ويتم بغرض الطلب( Monitor)المراقبمرتبطة عند2 الكود- ضمن مكان أي في استدعائه يمكن أي مقيد غيرالصنف- 3 هذا من غرض إنشاء يمكن ال
) نيسب ) من أكثر من إليه الوصول يتم غرضمتزامن كل أجل من القفل يملك وحيد نيسب( جاهزية لكي (Ready Queueرتل المعالج يختارها أن تنتظر التي النياسب يحوي
النياسب بقية استبعاد مع القفل على تحصل( إنتظار (Waiting Queueرتل إيقاظ إنتظارإشارة حالة في التي النياسب يحوي
القفل على الحصول لتستعيد أخر نيسب من
04132023 1149 PM 24
Monitor Class
04132023 1149 PM 25
Producer Consumere Example
04132023 1149 PM 12
Thread Priority ) ( نفس في معه تشترك التي النياسب من لغيره بالنسبة أولوية أفضلية نيسب لكل
(Processالمهمة ) بأفضلية النياسب جميع إنشاء Normalيتم
ϑ λ ϭϟ ΔϣϳϘϟ
ΎϳϠόϟΔϳϠο ϓϷϪϟΏγϳϧϟ Highest
ϱΩΎόϟΏγϳϧϟϥϣϰϠϋΔϳϠο ϓϪϟΏγϳϧϟ AboveNormal
ΔϳΩΎϋΔϳϠο ϓϪϟΏγϳϧϟ Normal
ϱΩΎόϟΏγϳϧϟϥϣϰϧΩΔϳϠο ϓϪϟΏγϳϧϟ BelowNormal
ϪϟΏγϳϧϟϷΔϳϠο ϓΎϳϧΩϟ Lowest
04132023 1149 PM 13
الموارد على التنافسConcurrency
النياسب التطبيقات ذات ( Multithreaded Application)متعددة p جدا عظيمة فوائد
p أبدا p سهال p أمرا ليس النياسب إدارة ستكون النتائج فإن الذاكرة في مشترك غرض على العمل نيسبان حاول إذا
خاطئة الموارد على التنافس مشاكل لحل أساسين مفهومين على التعرف يجب
الحرجة المقاطع( Critical Sections )(القفلLock ) دخول لتحقيق طريقة واحد نيسبوهي الحرج المقطع إلى
مالحظات
) نحتاج ) التي الشيفرة الكود من جزء أصغر نقفل بحيث القفل استعمال عند الحذر علينا يجبالبرنامج ضمن حمايته إلى
المهام نطاق على ولكن التشغيل نظام قبل من ومطبقة موجودة هي األفكار هذه(Processes )النياسب نطاق على وسنراها
04132023 1149 PM 14
الحرجة المقاطع استخداموالقفل
Lock
read value from DB update value in RAMwriting value to DB
04132023 1149 PM 15
الحرجة المقاطع استخداموالقفل
Static int [] arr=new int [10]
Static int index++ if (indexgt=10) return ConsoleWriteLine(arr[index])
04132023 1149 PM 16
النياسب بين ThreadsالتزامنSynchronization
هما لسببين النياسب بين المزامنة إلى نحتاجمشتركة موارد استخدامالتواقت(Concurrency)
Thread B Globalx=4
Thread A
Globalx=3
call function
Func(Globalx )
04132023 1149 PM 17
التزامن SynchronizationتحقيقImplementation
من مال سحب بعمليات والقيام مصرفي حساب على نيسب من أكثر ولوج مسألةالرصيد
المثال بعرض تزامن سنقوم دون من تزامن مرة مع مرة و ( في تكون النياسب وبقية الغرض على قفل يضع الحرج المقطع إلى يدخل ما لحظة في واحد نيسب فقط
(انتظارحالة ( الحرج المقطع كامل تنفيذ من النيسب هذ ينتهي أن كاملة بعد مناقلة يمثل بتحريريقوم( والذي
القفل التشغيل نظام يقوم النياسب ثم أحد إنتظار بإختيار حالة في التي الحرج المقطع في للدخول
04132023 1149 PM 18
التزامن Synchronization Classesأصناف الصفInterlocked ( مناهج على الصنف هذه آمنة (methodيحتوي
(Safe ) العمليات اآلمنةلتقديم نياسب عدة بين المشتركة المتحوالت على هي المناهج أن( atomic )ذريةهذه عن المنهجأي عبارة مناقلةهو
(Transaction ) كامل بشكل تتم أن مقاطعة فإما المعالج دون من W أبدا تتم ال أن أو
المناهج هذه من
Increment - Decrement Exchange القديمة )األصليةالقيمة ويعيد متحولفي قيمةيضع للمتحول( CompareExchange
04132023 1149 PM 19
Parallel Programming Example من األعداد بجمع pولدينا n 1جمع نيسب كل يقوم حيث نيسب
من np 1األعداد
04132023 1149 PM 20
Semaphore Class المهام بين التزامن لتحقيق طريقة عن عبارة هو السيمافور )Processes (يمكن التشغيل نظام مستوى في p لتحقيق استعماله أيضا
النياسب بين التزامن
مثل رقم عن عبارة_ مورد على الحصول تستطيع التي النياسب من محدود عدد ي من أكثر ق[بل من عليها التنافس يتم التي الموارد من( Pool)حوض (أو مشترك)نيسب
الطابعة مثال
هامة عدد مالحظة هي السيمافور الصفر قيمة يساوي أو عن أكبر عددويعبرأن النياسب تستطيع إنتظار الموردعلى تحصلالتي دون من و مباشرة
04132023 1149 PM 21
Mutex Class (Mutual Exclusion)( الصف هذا بسيطة( Mutexيعطي يسمح للتزامنطريقة لنيسب بحيث
مع واحد الحرج المقطع إلى البقية بالدخول في ) إستبعاد تبقى النياسب بقيةالنيسب هذا يقوم أن إلى إنتظار ال حالة ( Mutexبتحرير
ال ( Lock - unlockآلية )Mutex يستعمل
04132023 1149 PM 22
اإلقفال حدوث تتجنب أن يمكن كيفبرنامجك( Deadlockالمتبادل) شيفرة في
نيسبين بين يحدث) Two Threads (إلى بحاجة النيسبين من كل عندما عمله يكمل حتى األخر من معطيات
عتبر من أعقد المشاكل التي واجهت مصمي نظم التشغيلWهذه المشكلة تالمهام على حلها تم مستوى على حلها لكن و (Processes)مستوى
المبرمج مسؤولية من هي(Threads)النياسب
المشكلة هذه تنتج الحقيقة في)DeadLock (األقفال إستخدام عن Locks ال إستخدام وعن Mutexp أيضا
مفرغة حلقات فيها تحدث ال بحيث النياسب متعددة تطبيقات تصميم iجدا الصعب من(DeadLocks)
04132023 1149 PM 23
Monitor Class( كائن واحد قفلNETفي( objectلكل نيسب قبل من عليه الحصول يتم الصفMonitor التالية المزايا يمللك
على- 1 الحصول ويتم بغرض الطلب( Monitor)المراقبمرتبطة عند2 الكود- ضمن مكان أي في استدعائه يمكن أي مقيد غيرالصنف- 3 هذا من غرض إنشاء يمكن ال
) نيسب ) من أكثر من إليه الوصول يتم غرضمتزامن كل أجل من القفل يملك وحيد نيسب( جاهزية لكي (Ready Queueرتل المعالج يختارها أن تنتظر التي النياسب يحوي
النياسب بقية استبعاد مع القفل على تحصل( إنتظار (Waiting Queueرتل إيقاظ إنتظارإشارة حالة في التي النياسب يحوي
القفل على الحصول لتستعيد أخر نيسب من
04132023 1149 PM 24
Monitor Class
04132023 1149 PM 25
Producer Consumere Example
04132023 1149 PM 13
الموارد على التنافسConcurrency
النياسب التطبيقات ذات ( Multithreaded Application)متعددة p جدا عظيمة فوائد
p أبدا p سهال p أمرا ليس النياسب إدارة ستكون النتائج فإن الذاكرة في مشترك غرض على العمل نيسبان حاول إذا
خاطئة الموارد على التنافس مشاكل لحل أساسين مفهومين على التعرف يجب
الحرجة المقاطع( Critical Sections )(القفلLock ) دخول لتحقيق طريقة واحد نيسبوهي الحرج المقطع إلى
مالحظات
) نحتاج ) التي الشيفرة الكود من جزء أصغر نقفل بحيث القفل استعمال عند الحذر علينا يجبالبرنامج ضمن حمايته إلى
المهام نطاق على ولكن التشغيل نظام قبل من ومطبقة موجودة هي األفكار هذه(Processes )النياسب نطاق على وسنراها
04132023 1149 PM 14
الحرجة المقاطع استخداموالقفل
Lock
read value from DB update value in RAMwriting value to DB
04132023 1149 PM 15
الحرجة المقاطع استخداموالقفل
Static int [] arr=new int [10]
Static int index++ if (indexgt=10) return ConsoleWriteLine(arr[index])
04132023 1149 PM 16
النياسب بين ThreadsالتزامنSynchronization
هما لسببين النياسب بين المزامنة إلى نحتاجمشتركة موارد استخدامالتواقت(Concurrency)
Thread B Globalx=4
Thread A
Globalx=3
call function
Func(Globalx )
04132023 1149 PM 17
التزامن SynchronizationتحقيقImplementation
من مال سحب بعمليات والقيام مصرفي حساب على نيسب من أكثر ولوج مسألةالرصيد
المثال بعرض تزامن سنقوم دون من تزامن مرة مع مرة و ( في تكون النياسب وبقية الغرض على قفل يضع الحرج المقطع إلى يدخل ما لحظة في واحد نيسب فقط
(انتظارحالة ( الحرج المقطع كامل تنفيذ من النيسب هذ ينتهي أن كاملة بعد مناقلة يمثل بتحريريقوم( والذي
القفل التشغيل نظام يقوم النياسب ثم أحد إنتظار بإختيار حالة في التي الحرج المقطع في للدخول
04132023 1149 PM 18
التزامن Synchronization Classesأصناف الصفInterlocked ( مناهج على الصنف هذه آمنة (methodيحتوي
(Safe ) العمليات اآلمنةلتقديم نياسب عدة بين المشتركة المتحوالت على هي المناهج أن( atomic )ذريةهذه عن المنهجأي عبارة مناقلةهو
(Transaction ) كامل بشكل تتم أن مقاطعة فإما المعالج دون من W أبدا تتم ال أن أو
المناهج هذه من
Increment - Decrement Exchange القديمة )األصليةالقيمة ويعيد متحولفي قيمةيضع للمتحول( CompareExchange
04132023 1149 PM 19
Parallel Programming Example من األعداد بجمع pولدينا n 1جمع نيسب كل يقوم حيث نيسب
من np 1األعداد
04132023 1149 PM 20
Semaphore Class المهام بين التزامن لتحقيق طريقة عن عبارة هو السيمافور )Processes (يمكن التشغيل نظام مستوى في p لتحقيق استعماله أيضا
النياسب بين التزامن
مثل رقم عن عبارة_ مورد على الحصول تستطيع التي النياسب من محدود عدد ي من أكثر ق[بل من عليها التنافس يتم التي الموارد من( Pool)حوض (أو مشترك)نيسب
الطابعة مثال
هامة عدد مالحظة هي السيمافور الصفر قيمة يساوي أو عن أكبر عددويعبرأن النياسب تستطيع إنتظار الموردعلى تحصلالتي دون من و مباشرة
04132023 1149 PM 21
Mutex Class (Mutual Exclusion)( الصف هذا بسيطة( Mutexيعطي يسمح للتزامنطريقة لنيسب بحيث
مع واحد الحرج المقطع إلى البقية بالدخول في ) إستبعاد تبقى النياسب بقيةالنيسب هذا يقوم أن إلى إنتظار ال حالة ( Mutexبتحرير
ال ( Lock - unlockآلية )Mutex يستعمل
04132023 1149 PM 22
اإلقفال حدوث تتجنب أن يمكن كيفبرنامجك( Deadlockالمتبادل) شيفرة في
نيسبين بين يحدث) Two Threads (إلى بحاجة النيسبين من كل عندما عمله يكمل حتى األخر من معطيات
عتبر من أعقد المشاكل التي واجهت مصمي نظم التشغيلWهذه المشكلة تالمهام على حلها تم مستوى على حلها لكن و (Processes)مستوى
المبرمج مسؤولية من هي(Threads)النياسب
المشكلة هذه تنتج الحقيقة في)DeadLock (األقفال إستخدام عن Locks ال إستخدام وعن Mutexp أيضا
مفرغة حلقات فيها تحدث ال بحيث النياسب متعددة تطبيقات تصميم iجدا الصعب من(DeadLocks)
04132023 1149 PM 23
Monitor Class( كائن واحد قفلNETفي( objectلكل نيسب قبل من عليه الحصول يتم الصفMonitor التالية المزايا يمللك
على- 1 الحصول ويتم بغرض الطلب( Monitor)المراقبمرتبطة عند2 الكود- ضمن مكان أي في استدعائه يمكن أي مقيد غيرالصنف- 3 هذا من غرض إنشاء يمكن ال
) نيسب ) من أكثر من إليه الوصول يتم غرضمتزامن كل أجل من القفل يملك وحيد نيسب( جاهزية لكي (Ready Queueرتل المعالج يختارها أن تنتظر التي النياسب يحوي
النياسب بقية استبعاد مع القفل على تحصل( إنتظار (Waiting Queueرتل إيقاظ إنتظارإشارة حالة في التي النياسب يحوي
القفل على الحصول لتستعيد أخر نيسب من
04132023 1149 PM 24
Monitor Class
04132023 1149 PM 25
Producer Consumere Example
04132023 1149 PM 14
الحرجة المقاطع استخداموالقفل
Lock
read value from DB update value in RAMwriting value to DB
04132023 1149 PM 15
الحرجة المقاطع استخداموالقفل
Static int [] arr=new int [10]
Static int index++ if (indexgt=10) return ConsoleWriteLine(arr[index])
04132023 1149 PM 16
النياسب بين ThreadsالتزامنSynchronization
هما لسببين النياسب بين المزامنة إلى نحتاجمشتركة موارد استخدامالتواقت(Concurrency)
Thread B Globalx=4
Thread A
Globalx=3
call function
Func(Globalx )
04132023 1149 PM 17
التزامن SynchronizationتحقيقImplementation
من مال سحب بعمليات والقيام مصرفي حساب على نيسب من أكثر ولوج مسألةالرصيد
المثال بعرض تزامن سنقوم دون من تزامن مرة مع مرة و ( في تكون النياسب وبقية الغرض على قفل يضع الحرج المقطع إلى يدخل ما لحظة في واحد نيسب فقط
(انتظارحالة ( الحرج المقطع كامل تنفيذ من النيسب هذ ينتهي أن كاملة بعد مناقلة يمثل بتحريريقوم( والذي
القفل التشغيل نظام يقوم النياسب ثم أحد إنتظار بإختيار حالة في التي الحرج المقطع في للدخول
04132023 1149 PM 18
التزامن Synchronization Classesأصناف الصفInterlocked ( مناهج على الصنف هذه آمنة (methodيحتوي
(Safe ) العمليات اآلمنةلتقديم نياسب عدة بين المشتركة المتحوالت على هي المناهج أن( atomic )ذريةهذه عن المنهجأي عبارة مناقلةهو
(Transaction ) كامل بشكل تتم أن مقاطعة فإما المعالج دون من W أبدا تتم ال أن أو
المناهج هذه من
Increment - Decrement Exchange القديمة )األصليةالقيمة ويعيد متحولفي قيمةيضع للمتحول( CompareExchange
04132023 1149 PM 19
Parallel Programming Example من األعداد بجمع pولدينا n 1جمع نيسب كل يقوم حيث نيسب
من np 1األعداد
04132023 1149 PM 20
Semaphore Class المهام بين التزامن لتحقيق طريقة عن عبارة هو السيمافور )Processes (يمكن التشغيل نظام مستوى في p لتحقيق استعماله أيضا
النياسب بين التزامن
مثل رقم عن عبارة_ مورد على الحصول تستطيع التي النياسب من محدود عدد ي من أكثر ق[بل من عليها التنافس يتم التي الموارد من( Pool)حوض (أو مشترك)نيسب
الطابعة مثال
هامة عدد مالحظة هي السيمافور الصفر قيمة يساوي أو عن أكبر عددويعبرأن النياسب تستطيع إنتظار الموردعلى تحصلالتي دون من و مباشرة
04132023 1149 PM 21
Mutex Class (Mutual Exclusion)( الصف هذا بسيطة( Mutexيعطي يسمح للتزامنطريقة لنيسب بحيث
مع واحد الحرج المقطع إلى البقية بالدخول في ) إستبعاد تبقى النياسب بقيةالنيسب هذا يقوم أن إلى إنتظار ال حالة ( Mutexبتحرير
ال ( Lock - unlockآلية )Mutex يستعمل
04132023 1149 PM 22
اإلقفال حدوث تتجنب أن يمكن كيفبرنامجك( Deadlockالمتبادل) شيفرة في
نيسبين بين يحدث) Two Threads (إلى بحاجة النيسبين من كل عندما عمله يكمل حتى األخر من معطيات
عتبر من أعقد المشاكل التي واجهت مصمي نظم التشغيلWهذه المشكلة تالمهام على حلها تم مستوى على حلها لكن و (Processes)مستوى
المبرمج مسؤولية من هي(Threads)النياسب
المشكلة هذه تنتج الحقيقة في)DeadLock (األقفال إستخدام عن Locks ال إستخدام وعن Mutexp أيضا
مفرغة حلقات فيها تحدث ال بحيث النياسب متعددة تطبيقات تصميم iجدا الصعب من(DeadLocks)
04132023 1149 PM 23
Monitor Class( كائن واحد قفلNETفي( objectلكل نيسب قبل من عليه الحصول يتم الصفMonitor التالية المزايا يمللك
على- 1 الحصول ويتم بغرض الطلب( Monitor)المراقبمرتبطة عند2 الكود- ضمن مكان أي في استدعائه يمكن أي مقيد غيرالصنف- 3 هذا من غرض إنشاء يمكن ال
) نيسب ) من أكثر من إليه الوصول يتم غرضمتزامن كل أجل من القفل يملك وحيد نيسب( جاهزية لكي (Ready Queueرتل المعالج يختارها أن تنتظر التي النياسب يحوي
النياسب بقية استبعاد مع القفل على تحصل( إنتظار (Waiting Queueرتل إيقاظ إنتظارإشارة حالة في التي النياسب يحوي
القفل على الحصول لتستعيد أخر نيسب من
04132023 1149 PM 24
Monitor Class
04132023 1149 PM 25
Producer Consumere Example
04132023 1149 PM 15
الحرجة المقاطع استخداموالقفل
Static int [] arr=new int [10]
Static int index++ if (indexgt=10) return ConsoleWriteLine(arr[index])
04132023 1149 PM 16
النياسب بين ThreadsالتزامنSynchronization
هما لسببين النياسب بين المزامنة إلى نحتاجمشتركة موارد استخدامالتواقت(Concurrency)
Thread B Globalx=4
Thread A
Globalx=3
call function
Func(Globalx )
04132023 1149 PM 17
التزامن SynchronizationتحقيقImplementation
من مال سحب بعمليات والقيام مصرفي حساب على نيسب من أكثر ولوج مسألةالرصيد
المثال بعرض تزامن سنقوم دون من تزامن مرة مع مرة و ( في تكون النياسب وبقية الغرض على قفل يضع الحرج المقطع إلى يدخل ما لحظة في واحد نيسب فقط
(انتظارحالة ( الحرج المقطع كامل تنفيذ من النيسب هذ ينتهي أن كاملة بعد مناقلة يمثل بتحريريقوم( والذي
القفل التشغيل نظام يقوم النياسب ثم أحد إنتظار بإختيار حالة في التي الحرج المقطع في للدخول
04132023 1149 PM 18
التزامن Synchronization Classesأصناف الصفInterlocked ( مناهج على الصنف هذه آمنة (methodيحتوي
(Safe ) العمليات اآلمنةلتقديم نياسب عدة بين المشتركة المتحوالت على هي المناهج أن( atomic )ذريةهذه عن المنهجأي عبارة مناقلةهو
(Transaction ) كامل بشكل تتم أن مقاطعة فإما المعالج دون من W أبدا تتم ال أن أو
المناهج هذه من
Increment - Decrement Exchange القديمة )األصليةالقيمة ويعيد متحولفي قيمةيضع للمتحول( CompareExchange
04132023 1149 PM 19
Parallel Programming Example من األعداد بجمع pولدينا n 1جمع نيسب كل يقوم حيث نيسب
من np 1األعداد
04132023 1149 PM 20
Semaphore Class المهام بين التزامن لتحقيق طريقة عن عبارة هو السيمافور )Processes (يمكن التشغيل نظام مستوى في p لتحقيق استعماله أيضا
النياسب بين التزامن
مثل رقم عن عبارة_ مورد على الحصول تستطيع التي النياسب من محدود عدد ي من أكثر ق[بل من عليها التنافس يتم التي الموارد من( Pool)حوض (أو مشترك)نيسب
الطابعة مثال
هامة عدد مالحظة هي السيمافور الصفر قيمة يساوي أو عن أكبر عددويعبرأن النياسب تستطيع إنتظار الموردعلى تحصلالتي دون من و مباشرة
04132023 1149 PM 21
Mutex Class (Mutual Exclusion)( الصف هذا بسيطة( Mutexيعطي يسمح للتزامنطريقة لنيسب بحيث
مع واحد الحرج المقطع إلى البقية بالدخول في ) إستبعاد تبقى النياسب بقيةالنيسب هذا يقوم أن إلى إنتظار ال حالة ( Mutexبتحرير
ال ( Lock - unlockآلية )Mutex يستعمل
04132023 1149 PM 22
اإلقفال حدوث تتجنب أن يمكن كيفبرنامجك( Deadlockالمتبادل) شيفرة في
نيسبين بين يحدث) Two Threads (إلى بحاجة النيسبين من كل عندما عمله يكمل حتى األخر من معطيات
عتبر من أعقد المشاكل التي واجهت مصمي نظم التشغيلWهذه المشكلة تالمهام على حلها تم مستوى على حلها لكن و (Processes)مستوى
المبرمج مسؤولية من هي(Threads)النياسب
المشكلة هذه تنتج الحقيقة في)DeadLock (األقفال إستخدام عن Locks ال إستخدام وعن Mutexp أيضا
مفرغة حلقات فيها تحدث ال بحيث النياسب متعددة تطبيقات تصميم iجدا الصعب من(DeadLocks)
04132023 1149 PM 23
Monitor Class( كائن واحد قفلNETفي( objectلكل نيسب قبل من عليه الحصول يتم الصفMonitor التالية المزايا يمللك
على- 1 الحصول ويتم بغرض الطلب( Monitor)المراقبمرتبطة عند2 الكود- ضمن مكان أي في استدعائه يمكن أي مقيد غيرالصنف- 3 هذا من غرض إنشاء يمكن ال
) نيسب ) من أكثر من إليه الوصول يتم غرضمتزامن كل أجل من القفل يملك وحيد نيسب( جاهزية لكي (Ready Queueرتل المعالج يختارها أن تنتظر التي النياسب يحوي
النياسب بقية استبعاد مع القفل على تحصل( إنتظار (Waiting Queueرتل إيقاظ إنتظارإشارة حالة في التي النياسب يحوي
القفل على الحصول لتستعيد أخر نيسب من
04132023 1149 PM 24
Monitor Class
04132023 1149 PM 25
Producer Consumere Example
04132023 1149 PM 16
النياسب بين ThreadsالتزامنSynchronization
هما لسببين النياسب بين المزامنة إلى نحتاجمشتركة موارد استخدامالتواقت(Concurrency)
Thread B Globalx=4
Thread A
Globalx=3
call function
Func(Globalx )
04132023 1149 PM 17
التزامن SynchronizationتحقيقImplementation
من مال سحب بعمليات والقيام مصرفي حساب على نيسب من أكثر ولوج مسألةالرصيد
المثال بعرض تزامن سنقوم دون من تزامن مرة مع مرة و ( في تكون النياسب وبقية الغرض على قفل يضع الحرج المقطع إلى يدخل ما لحظة في واحد نيسب فقط
(انتظارحالة ( الحرج المقطع كامل تنفيذ من النيسب هذ ينتهي أن كاملة بعد مناقلة يمثل بتحريريقوم( والذي
القفل التشغيل نظام يقوم النياسب ثم أحد إنتظار بإختيار حالة في التي الحرج المقطع في للدخول
04132023 1149 PM 18
التزامن Synchronization Classesأصناف الصفInterlocked ( مناهج على الصنف هذه آمنة (methodيحتوي
(Safe ) العمليات اآلمنةلتقديم نياسب عدة بين المشتركة المتحوالت على هي المناهج أن( atomic )ذريةهذه عن المنهجأي عبارة مناقلةهو
(Transaction ) كامل بشكل تتم أن مقاطعة فإما المعالج دون من W أبدا تتم ال أن أو
المناهج هذه من
Increment - Decrement Exchange القديمة )األصليةالقيمة ويعيد متحولفي قيمةيضع للمتحول( CompareExchange
04132023 1149 PM 19
Parallel Programming Example من األعداد بجمع pولدينا n 1جمع نيسب كل يقوم حيث نيسب
من np 1األعداد
04132023 1149 PM 20
Semaphore Class المهام بين التزامن لتحقيق طريقة عن عبارة هو السيمافور )Processes (يمكن التشغيل نظام مستوى في p لتحقيق استعماله أيضا
النياسب بين التزامن
مثل رقم عن عبارة_ مورد على الحصول تستطيع التي النياسب من محدود عدد ي من أكثر ق[بل من عليها التنافس يتم التي الموارد من( Pool)حوض (أو مشترك)نيسب
الطابعة مثال
هامة عدد مالحظة هي السيمافور الصفر قيمة يساوي أو عن أكبر عددويعبرأن النياسب تستطيع إنتظار الموردعلى تحصلالتي دون من و مباشرة
04132023 1149 PM 21
Mutex Class (Mutual Exclusion)( الصف هذا بسيطة( Mutexيعطي يسمح للتزامنطريقة لنيسب بحيث
مع واحد الحرج المقطع إلى البقية بالدخول في ) إستبعاد تبقى النياسب بقيةالنيسب هذا يقوم أن إلى إنتظار ال حالة ( Mutexبتحرير
ال ( Lock - unlockآلية )Mutex يستعمل
04132023 1149 PM 22
اإلقفال حدوث تتجنب أن يمكن كيفبرنامجك( Deadlockالمتبادل) شيفرة في
نيسبين بين يحدث) Two Threads (إلى بحاجة النيسبين من كل عندما عمله يكمل حتى األخر من معطيات
عتبر من أعقد المشاكل التي واجهت مصمي نظم التشغيلWهذه المشكلة تالمهام على حلها تم مستوى على حلها لكن و (Processes)مستوى
المبرمج مسؤولية من هي(Threads)النياسب
المشكلة هذه تنتج الحقيقة في)DeadLock (األقفال إستخدام عن Locks ال إستخدام وعن Mutexp أيضا
مفرغة حلقات فيها تحدث ال بحيث النياسب متعددة تطبيقات تصميم iجدا الصعب من(DeadLocks)
04132023 1149 PM 23
Monitor Class( كائن واحد قفلNETفي( objectلكل نيسب قبل من عليه الحصول يتم الصفMonitor التالية المزايا يمللك
على- 1 الحصول ويتم بغرض الطلب( Monitor)المراقبمرتبطة عند2 الكود- ضمن مكان أي في استدعائه يمكن أي مقيد غيرالصنف- 3 هذا من غرض إنشاء يمكن ال
) نيسب ) من أكثر من إليه الوصول يتم غرضمتزامن كل أجل من القفل يملك وحيد نيسب( جاهزية لكي (Ready Queueرتل المعالج يختارها أن تنتظر التي النياسب يحوي
النياسب بقية استبعاد مع القفل على تحصل( إنتظار (Waiting Queueرتل إيقاظ إنتظارإشارة حالة في التي النياسب يحوي
القفل على الحصول لتستعيد أخر نيسب من
04132023 1149 PM 24
Monitor Class
04132023 1149 PM 25
Producer Consumere Example
04132023 1149 PM 17
التزامن SynchronizationتحقيقImplementation
من مال سحب بعمليات والقيام مصرفي حساب على نيسب من أكثر ولوج مسألةالرصيد
المثال بعرض تزامن سنقوم دون من تزامن مرة مع مرة و ( في تكون النياسب وبقية الغرض على قفل يضع الحرج المقطع إلى يدخل ما لحظة في واحد نيسب فقط
(انتظارحالة ( الحرج المقطع كامل تنفيذ من النيسب هذ ينتهي أن كاملة بعد مناقلة يمثل بتحريريقوم( والذي
القفل التشغيل نظام يقوم النياسب ثم أحد إنتظار بإختيار حالة في التي الحرج المقطع في للدخول
04132023 1149 PM 18
التزامن Synchronization Classesأصناف الصفInterlocked ( مناهج على الصنف هذه آمنة (methodيحتوي
(Safe ) العمليات اآلمنةلتقديم نياسب عدة بين المشتركة المتحوالت على هي المناهج أن( atomic )ذريةهذه عن المنهجأي عبارة مناقلةهو
(Transaction ) كامل بشكل تتم أن مقاطعة فإما المعالج دون من W أبدا تتم ال أن أو
المناهج هذه من
Increment - Decrement Exchange القديمة )األصليةالقيمة ويعيد متحولفي قيمةيضع للمتحول( CompareExchange
04132023 1149 PM 19
Parallel Programming Example من األعداد بجمع pولدينا n 1جمع نيسب كل يقوم حيث نيسب
من np 1األعداد
04132023 1149 PM 20
Semaphore Class المهام بين التزامن لتحقيق طريقة عن عبارة هو السيمافور )Processes (يمكن التشغيل نظام مستوى في p لتحقيق استعماله أيضا
النياسب بين التزامن
مثل رقم عن عبارة_ مورد على الحصول تستطيع التي النياسب من محدود عدد ي من أكثر ق[بل من عليها التنافس يتم التي الموارد من( Pool)حوض (أو مشترك)نيسب
الطابعة مثال
هامة عدد مالحظة هي السيمافور الصفر قيمة يساوي أو عن أكبر عددويعبرأن النياسب تستطيع إنتظار الموردعلى تحصلالتي دون من و مباشرة
04132023 1149 PM 21
Mutex Class (Mutual Exclusion)( الصف هذا بسيطة( Mutexيعطي يسمح للتزامنطريقة لنيسب بحيث
مع واحد الحرج المقطع إلى البقية بالدخول في ) إستبعاد تبقى النياسب بقيةالنيسب هذا يقوم أن إلى إنتظار ال حالة ( Mutexبتحرير
ال ( Lock - unlockآلية )Mutex يستعمل
04132023 1149 PM 22
اإلقفال حدوث تتجنب أن يمكن كيفبرنامجك( Deadlockالمتبادل) شيفرة في
نيسبين بين يحدث) Two Threads (إلى بحاجة النيسبين من كل عندما عمله يكمل حتى األخر من معطيات
عتبر من أعقد المشاكل التي واجهت مصمي نظم التشغيلWهذه المشكلة تالمهام على حلها تم مستوى على حلها لكن و (Processes)مستوى
المبرمج مسؤولية من هي(Threads)النياسب
المشكلة هذه تنتج الحقيقة في)DeadLock (األقفال إستخدام عن Locks ال إستخدام وعن Mutexp أيضا
مفرغة حلقات فيها تحدث ال بحيث النياسب متعددة تطبيقات تصميم iجدا الصعب من(DeadLocks)
04132023 1149 PM 23
Monitor Class( كائن واحد قفلNETفي( objectلكل نيسب قبل من عليه الحصول يتم الصفMonitor التالية المزايا يمللك
على- 1 الحصول ويتم بغرض الطلب( Monitor)المراقبمرتبطة عند2 الكود- ضمن مكان أي في استدعائه يمكن أي مقيد غيرالصنف- 3 هذا من غرض إنشاء يمكن ال
) نيسب ) من أكثر من إليه الوصول يتم غرضمتزامن كل أجل من القفل يملك وحيد نيسب( جاهزية لكي (Ready Queueرتل المعالج يختارها أن تنتظر التي النياسب يحوي
النياسب بقية استبعاد مع القفل على تحصل( إنتظار (Waiting Queueرتل إيقاظ إنتظارإشارة حالة في التي النياسب يحوي
القفل على الحصول لتستعيد أخر نيسب من
04132023 1149 PM 24
Monitor Class
04132023 1149 PM 25
Producer Consumere Example
04132023 1149 PM 18
التزامن Synchronization Classesأصناف الصفInterlocked ( مناهج على الصنف هذه آمنة (methodيحتوي
(Safe ) العمليات اآلمنةلتقديم نياسب عدة بين المشتركة المتحوالت على هي المناهج أن( atomic )ذريةهذه عن المنهجأي عبارة مناقلةهو
(Transaction ) كامل بشكل تتم أن مقاطعة فإما المعالج دون من W أبدا تتم ال أن أو
المناهج هذه من
Increment - Decrement Exchange القديمة )األصليةالقيمة ويعيد متحولفي قيمةيضع للمتحول( CompareExchange
04132023 1149 PM 19
Parallel Programming Example من األعداد بجمع pولدينا n 1جمع نيسب كل يقوم حيث نيسب
من np 1األعداد
04132023 1149 PM 20
Semaphore Class المهام بين التزامن لتحقيق طريقة عن عبارة هو السيمافور )Processes (يمكن التشغيل نظام مستوى في p لتحقيق استعماله أيضا
النياسب بين التزامن
مثل رقم عن عبارة_ مورد على الحصول تستطيع التي النياسب من محدود عدد ي من أكثر ق[بل من عليها التنافس يتم التي الموارد من( Pool)حوض (أو مشترك)نيسب
الطابعة مثال
هامة عدد مالحظة هي السيمافور الصفر قيمة يساوي أو عن أكبر عددويعبرأن النياسب تستطيع إنتظار الموردعلى تحصلالتي دون من و مباشرة
04132023 1149 PM 21
Mutex Class (Mutual Exclusion)( الصف هذا بسيطة( Mutexيعطي يسمح للتزامنطريقة لنيسب بحيث
مع واحد الحرج المقطع إلى البقية بالدخول في ) إستبعاد تبقى النياسب بقيةالنيسب هذا يقوم أن إلى إنتظار ال حالة ( Mutexبتحرير
ال ( Lock - unlockآلية )Mutex يستعمل
04132023 1149 PM 22
اإلقفال حدوث تتجنب أن يمكن كيفبرنامجك( Deadlockالمتبادل) شيفرة في
نيسبين بين يحدث) Two Threads (إلى بحاجة النيسبين من كل عندما عمله يكمل حتى األخر من معطيات
عتبر من أعقد المشاكل التي واجهت مصمي نظم التشغيلWهذه المشكلة تالمهام على حلها تم مستوى على حلها لكن و (Processes)مستوى
المبرمج مسؤولية من هي(Threads)النياسب
المشكلة هذه تنتج الحقيقة في)DeadLock (األقفال إستخدام عن Locks ال إستخدام وعن Mutexp أيضا
مفرغة حلقات فيها تحدث ال بحيث النياسب متعددة تطبيقات تصميم iجدا الصعب من(DeadLocks)
04132023 1149 PM 23
Monitor Class( كائن واحد قفلNETفي( objectلكل نيسب قبل من عليه الحصول يتم الصفMonitor التالية المزايا يمللك
على- 1 الحصول ويتم بغرض الطلب( Monitor)المراقبمرتبطة عند2 الكود- ضمن مكان أي في استدعائه يمكن أي مقيد غيرالصنف- 3 هذا من غرض إنشاء يمكن ال
) نيسب ) من أكثر من إليه الوصول يتم غرضمتزامن كل أجل من القفل يملك وحيد نيسب( جاهزية لكي (Ready Queueرتل المعالج يختارها أن تنتظر التي النياسب يحوي
النياسب بقية استبعاد مع القفل على تحصل( إنتظار (Waiting Queueرتل إيقاظ إنتظارإشارة حالة في التي النياسب يحوي
القفل على الحصول لتستعيد أخر نيسب من
04132023 1149 PM 24
Monitor Class
04132023 1149 PM 25
Producer Consumere Example
04132023 1149 PM 19
Parallel Programming Example من األعداد بجمع pولدينا n 1جمع نيسب كل يقوم حيث نيسب
من np 1األعداد
04132023 1149 PM 20
Semaphore Class المهام بين التزامن لتحقيق طريقة عن عبارة هو السيمافور )Processes (يمكن التشغيل نظام مستوى في p لتحقيق استعماله أيضا
النياسب بين التزامن
مثل رقم عن عبارة_ مورد على الحصول تستطيع التي النياسب من محدود عدد ي من أكثر ق[بل من عليها التنافس يتم التي الموارد من( Pool)حوض (أو مشترك)نيسب
الطابعة مثال
هامة عدد مالحظة هي السيمافور الصفر قيمة يساوي أو عن أكبر عددويعبرأن النياسب تستطيع إنتظار الموردعلى تحصلالتي دون من و مباشرة
04132023 1149 PM 21
Mutex Class (Mutual Exclusion)( الصف هذا بسيطة( Mutexيعطي يسمح للتزامنطريقة لنيسب بحيث
مع واحد الحرج المقطع إلى البقية بالدخول في ) إستبعاد تبقى النياسب بقيةالنيسب هذا يقوم أن إلى إنتظار ال حالة ( Mutexبتحرير
ال ( Lock - unlockآلية )Mutex يستعمل
04132023 1149 PM 22
اإلقفال حدوث تتجنب أن يمكن كيفبرنامجك( Deadlockالمتبادل) شيفرة في
نيسبين بين يحدث) Two Threads (إلى بحاجة النيسبين من كل عندما عمله يكمل حتى األخر من معطيات
عتبر من أعقد المشاكل التي واجهت مصمي نظم التشغيلWهذه المشكلة تالمهام على حلها تم مستوى على حلها لكن و (Processes)مستوى
المبرمج مسؤولية من هي(Threads)النياسب
المشكلة هذه تنتج الحقيقة في)DeadLock (األقفال إستخدام عن Locks ال إستخدام وعن Mutexp أيضا
مفرغة حلقات فيها تحدث ال بحيث النياسب متعددة تطبيقات تصميم iجدا الصعب من(DeadLocks)
04132023 1149 PM 23
Monitor Class( كائن واحد قفلNETفي( objectلكل نيسب قبل من عليه الحصول يتم الصفMonitor التالية المزايا يمللك
على- 1 الحصول ويتم بغرض الطلب( Monitor)المراقبمرتبطة عند2 الكود- ضمن مكان أي في استدعائه يمكن أي مقيد غيرالصنف- 3 هذا من غرض إنشاء يمكن ال
) نيسب ) من أكثر من إليه الوصول يتم غرضمتزامن كل أجل من القفل يملك وحيد نيسب( جاهزية لكي (Ready Queueرتل المعالج يختارها أن تنتظر التي النياسب يحوي
النياسب بقية استبعاد مع القفل على تحصل( إنتظار (Waiting Queueرتل إيقاظ إنتظارإشارة حالة في التي النياسب يحوي
القفل على الحصول لتستعيد أخر نيسب من
04132023 1149 PM 24
Monitor Class
04132023 1149 PM 25
Producer Consumere Example
04132023 1149 PM 20
Semaphore Class المهام بين التزامن لتحقيق طريقة عن عبارة هو السيمافور )Processes (يمكن التشغيل نظام مستوى في p لتحقيق استعماله أيضا
النياسب بين التزامن
مثل رقم عن عبارة_ مورد على الحصول تستطيع التي النياسب من محدود عدد ي من أكثر ق[بل من عليها التنافس يتم التي الموارد من( Pool)حوض (أو مشترك)نيسب
الطابعة مثال
هامة عدد مالحظة هي السيمافور الصفر قيمة يساوي أو عن أكبر عددويعبرأن النياسب تستطيع إنتظار الموردعلى تحصلالتي دون من و مباشرة
04132023 1149 PM 21
Mutex Class (Mutual Exclusion)( الصف هذا بسيطة( Mutexيعطي يسمح للتزامنطريقة لنيسب بحيث
مع واحد الحرج المقطع إلى البقية بالدخول في ) إستبعاد تبقى النياسب بقيةالنيسب هذا يقوم أن إلى إنتظار ال حالة ( Mutexبتحرير
ال ( Lock - unlockآلية )Mutex يستعمل
04132023 1149 PM 22
اإلقفال حدوث تتجنب أن يمكن كيفبرنامجك( Deadlockالمتبادل) شيفرة في
نيسبين بين يحدث) Two Threads (إلى بحاجة النيسبين من كل عندما عمله يكمل حتى األخر من معطيات
عتبر من أعقد المشاكل التي واجهت مصمي نظم التشغيلWهذه المشكلة تالمهام على حلها تم مستوى على حلها لكن و (Processes)مستوى
المبرمج مسؤولية من هي(Threads)النياسب
المشكلة هذه تنتج الحقيقة في)DeadLock (األقفال إستخدام عن Locks ال إستخدام وعن Mutexp أيضا
مفرغة حلقات فيها تحدث ال بحيث النياسب متعددة تطبيقات تصميم iجدا الصعب من(DeadLocks)
04132023 1149 PM 23
Monitor Class( كائن واحد قفلNETفي( objectلكل نيسب قبل من عليه الحصول يتم الصفMonitor التالية المزايا يمللك
على- 1 الحصول ويتم بغرض الطلب( Monitor)المراقبمرتبطة عند2 الكود- ضمن مكان أي في استدعائه يمكن أي مقيد غيرالصنف- 3 هذا من غرض إنشاء يمكن ال
) نيسب ) من أكثر من إليه الوصول يتم غرضمتزامن كل أجل من القفل يملك وحيد نيسب( جاهزية لكي (Ready Queueرتل المعالج يختارها أن تنتظر التي النياسب يحوي
النياسب بقية استبعاد مع القفل على تحصل( إنتظار (Waiting Queueرتل إيقاظ إنتظارإشارة حالة في التي النياسب يحوي
القفل على الحصول لتستعيد أخر نيسب من
04132023 1149 PM 24
Monitor Class
04132023 1149 PM 25
Producer Consumere Example
04132023 1149 PM 21
Mutex Class (Mutual Exclusion)( الصف هذا بسيطة( Mutexيعطي يسمح للتزامنطريقة لنيسب بحيث
مع واحد الحرج المقطع إلى البقية بالدخول في ) إستبعاد تبقى النياسب بقيةالنيسب هذا يقوم أن إلى إنتظار ال حالة ( Mutexبتحرير
ال ( Lock - unlockآلية )Mutex يستعمل
04132023 1149 PM 22
اإلقفال حدوث تتجنب أن يمكن كيفبرنامجك( Deadlockالمتبادل) شيفرة في
نيسبين بين يحدث) Two Threads (إلى بحاجة النيسبين من كل عندما عمله يكمل حتى األخر من معطيات
عتبر من أعقد المشاكل التي واجهت مصمي نظم التشغيلWهذه المشكلة تالمهام على حلها تم مستوى على حلها لكن و (Processes)مستوى
المبرمج مسؤولية من هي(Threads)النياسب
المشكلة هذه تنتج الحقيقة في)DeadLock (األقفال إستخدام عن Locks ال إستخدام وعن Mutexp أيضا
مفرغة حلقات فيها تحدث ال بحيث النياسب متعددة تطبيقات تصميم iجدا الصعب من(DeadLocks)
04132023 1149 PM 23
Monitor Class( كائن واحد قفلNETفي( objectلكل نيسب قبل من عليه الحصول يتم الصفMonitor التالية المزايا يمللك
على- 1 الحصول ويتم بغرض الطلب( Monitor)المراقبمرتبطة عند2 الكود- ضمن مكان أي في استدعائه يمكن أي مقيد غيرالصنف- 3 هذا من غرض إنشاء يمكن ال
) نيسب ) من أكثر من إليه الوصول يتم غرضمتزامن كل أجل من القفل يملك وحيد نيسب( جاهزية لكي (Ready Queueرتل المعالج يختارها أن تنتظر التي النياسب يحوي
النياسب بقية استبعاد مع القفل على تحصل( إنتظار (Waiting Queueرتل إيقاظ إنتظارإشارة حالة في التي النياسب يحوي
القفل على الحصول لتستعيد أخر نيسب من
04132023 1149 PM 24
Monitor Class
04132023 1149 PM 25
Producer Consumere Example
04132023 1149 PM 22
اإلقفال حدوث تتجنب أن يمكن كيفبرنامجك( Deadlockالمتبادل) شيفرة في
نيسبين بين يحدث) Two Threads (إلى بحاجة النيسبين من كل عندما عمله يكمل حتى األخر من معطيات
عتبر من أعقد المشاكل التي واجهت مصمي نظم التشغيلWهذه المشكلة تالمهام على حلها تم مستوى على حلها لكن و (Processes)مستوى
المبرمج مسؤولية من هي(Threads)النياسب
المشكلة هذه تنتج الحقيقة في)DeadLock (األقفال إستخدام عن Locks ال إستخدام وعن Mutexp أيضا
مفرغة حلقات فيها تحدث ال بحيث النياسب متعددة تطبيقات تصميم iجدا الصعب من(DeadLocks)
04132023 1149 PM 23
Monitor Class( كائن واحد قفلNETفي( objectلكل نيسب قبل من عليه الحصول يتم الصفMonitor التالية المزايا يمللك
على- 1 الحصول ويتم بغرض الطلب( Monitor)المراقبمرتبطة عند2 الكود- ضمن مكان أي في استدعائه يمكن أي مقيد غيرالصنف- 3 هذا من غرض إنشاء يمكن ال
) نيسب ) من أكثر من إليه الوصول يتم غرضمتزامن كل أجل من القفل يملك وحيد نيسب( جاهزية لكي (Ready Queueرتل المعالج يختارها أن تنتظر التي النياسب يحوي
النياسب بقية استبعاد مع القفل على تحصل( إنتظار (Waiting Queueرتل إيقاظ إنتظارإشارة حالة في التي النياسب يحوي
القفل على الحصول لتستعيد أخر نيسب من
04132023 1149 PM 24
Monitor Class
04132023 1149 PM 25
Producer Consumere Example
04132023 1149 PM 23
Monitor Class( كائن واحد قفلNETفي( objectلكل نيسب قبل من عليه الحصول يتم الصفMonitor التالية المزايا يمللك
على- 1 الحصول ويتم بغرض الطلب( Monitor)المراقبمرتبطة عند2 الكود- ضمن مكان أي في استدعائه يمكن أي مقيد غيرالصنف- 3 هذا من غرض إنشاء يمكن ال
) نيسب ) من أكثر من إليه الوصول يتم غرضمتزامن كل أجل من القفل يملك وحيد نيسب( جاهزية لكي (Ready Queueرتل المعالج يختارها أن تنتظر التي النياسب يحوي
النياسب بقية استبعاد مع القفل على تحصل( إنتظار (Waiting Queueرتل إيقاظ إنتظارإشارة حالة في التي النياسب يحوي
القفل على الحصول لتستعيد أخر نيسب من
04132023 1149 PM 24
Monitor Class
04132023 1149 PM 25
Producer Consumere Example
04132023 1149 PM 24
Monitor Class
04132023 1149 PM 25
Producer Consumere Example
04132023 1149 PM 25
Producer Consumere Example