SlideShare a Scribd company logo
7- Multithreaded Applications
Outlines 
مقدمة في نظم التشغيل  
Multithreading لماذا نحتاج إلى تعدد النياسب  
Multithreaded كيف نقوم بإنشاء تطبيقات متعددة النياسب  
)Thread Terminatation( إيقاف نيسب  
Background Threads النياسب التي تعمل في الخلفية  
Thread Class  
05 2 تشرين الثاني، 14
مقدمة في نظم التشغيل 
هي برنامج قيد التنفيذ . : Process المهمة  
كيف يقوم النظام بتشغيل أكثر من برنامج بنفس الوقت ؟  
جدولة المهام .  
الشرائح الزمنية .  
Code 
Segment 
Data 
Segment 
Stack 
Segment 
Heap 
Segment 
05 3 تشرين الثاني، 14
مقدمة في نظم التشغيل 
)Stack( هو عبارة عن مسلك برمجي مستقل في المكدس :)Thread( تعريف النيسب  
بعبارة أخرى : هو سياق من التعليمات , )Heap( ويشترك مع غيره من النياسب في الكومة 
التي نريد تنفيذها على التوازي مع غيرها من التعليمات الأخرى. 
مجموعة من السجلات الخاصة + Stack في الحقيقة كل نيسب هو عبارة عن  
. )PC( بما فيها عداد البرنامج 
واحد على الأقل . Thread تحوي )Process( كل مهمة  
هي من مهمة نظام التشغيل . )Processes Management( إدارة المهام  
فهي من مهمة المبرمج . )Threads Management( أما إدارة النياسب  
جدولة النياسب , وجدولة المهام .  
05 4 تشرين الثاني، 14
Multithreading لماذا نحتاج إلى تعدد النياسب 
)Executing in Background( التنفيذ في الخلفية  
إنجاز مهمة اكثر من مرة لتسريع العمل  
استغلال أمثل للموارد المتاحة ) في  تنفيذ برنامج لمعالجة صورة معينة يمكن تقسيم العمل على أكثر من نيسب  
.)SMP حال وجود بنى 
تعدد النياسب هو الطريقة الطبيعية لبناء نوع محدد من البرامج  
المخدمات بكافة أنواعها .  
05 5 تشرين الثاني، 14
Multithreaded كيف نقوم بإنشاء تطبيقات متعددة النياسب 
هو مجموعة من التعليمات التي يتم تنفيذها على التوازي )Thread( علمنا إلى الآن أن النيسب  
مع بقية البرنامج . 
إلى مفوض )أو مندوب يُسمى Method يتم تمرير اسم هذا ال Method هذه التعليمات تمُثل  
. Thread وهذا المندوب يتم تسليمه إلى غرض من الصف )Delegate 
هي مفوض عن مجموعة من التوابع التي تحمل نفس التوقيع . : Delegate  
05 6 تشرين الثاني، 14
)Thread Terminatation( إيقاف نيسب 
كيف يتم إيقاف النيسب ومتى يتنهي عمله؟  
. Abort() إيقاف النيسب بشكل قسري عن طريق المنهج  
هذه الطريقة غير مُحبذة .  
05 7 تشرين الثاني، 14
Background Threads النياسب التي تعمل في الخلفية 
)Background( والتي تعمل في الخلفية )Processes( نظام التشغيل يستعمل مجموعة من المهام  
خدمات ويندوز" أما في نظام " )Windows Services( وتسمى في نظام ويندوز باسم 
. daemons فتسُمى Linux/Unix 
المهام التي تعمل في الخلفية يكون لها أفضلية أقل من المهام التي تعمل في الأمام .  
نفس الفكرة يمكن تطبيقها على النياسب حيث يمكننا أن نجعل نيسب معين يعمل في الخلفية.  
والتي IsBackground عن طريق الخاصية )Background( يمكن أن نجعل نيسب ما يعمل في الخلفية  
.true يتم ضبطها بالقيمة 
.)forground( عند إنتهاء أخر نيسب أمامي )Background( تنتهي النياسب الخلفية  
05 8 تشرين الثاني، 14
Thread Class 
نيسب في مستوى نظام التشغيل . System.Threading.Thread يمثل الصنف  
:Thread أهم الخصائص الموجود في الصنف  
الخا ية الو ف 
إلى النيسب المنفذ الي ا . )Reference ( تعيد مرجع CurrentThread 
إذا كان النيسب قد بدأ ولم ينتهي بعد . true تعيد IsAlive 
إذا كان النيسب يعم ي الخلفية . true تعيد ISBackground 
اسم النيسب. )set or get( تعيد أو ت دد Name 
أ لية النيسب. )set or get( تعيد أو ت دد Priority 
الة النيسب. )set or get( تعيد أو ت دد ThreadState 
05 9 تشرين الثاني، 14
Thread Class 
:Thread أهم المناهج الموجود في الصنف  
الو ف )method( ال ريقة 
البدأ بتنفيذ بتنفيذ النيسب Start 
تنهي تنفيذ النيسب ب ك وري. Abort 
waitSleepJoin تقا ع النيسب الذي يكون ي الة Interrupt 
إنت ار نيسب معين )النيسب ال مستدعي لهذا المنه ( تى ينتهي تنفيذ 
هذا النيسب. 
Join 
إيقاف م قت-( -pause( إرجا عم النيسب لفترة ير م دودة Suspend 
)Suspend( تب عم التابع السابق Resume 
تنوم النيسب لفترة م ددة . Sleep 
05 10 تشرين الثاني، 14
ThreadState مىTلمُس hا )Ernuem(a داد d ن التع Sضم t دةa وجو tم eهي s حل اكل لانيسب ت حا اللة نأيو عد سة حا بلا ت و  
القيمة 
النيسب يعم ا ن Running 
)Abort( النيسب قد استقب ا ارة إيقاف StopRequested 
)pause( النيسب قد استقب ا ارة إيقاف م قت SuspendRequested 
النيسب يعم ي الخلفية Background 
Start() النيسب تم إن ا ولكن لم يتم تنفيذ المنه Unstarted 
النيسب تم إيقا ه ) ( Stopped 
.Join Sleep أو wait النيسب متوقف ن استدعا WaitSleepJoin 
النيسب متوقف ب ك م قت Suspended 
يتنق النيسب إلى هذ ال الة عندما نكون قد استدعينا المنه AbortRequested 
للنيسب. ولكن هذا النيسب لم يستقب بعد إ ارة ا يقاف Abort 
)ThreadAbortException( والتي يتم التعبير عنها با ست نا 
والذي ينهي عم هذا النيسب. 
و النيسب قد توقف)مات( )AbortRequested( نف ال الة السابقة Aborted 
.Stopped ولكن اته لم تت ير إلى ال الة 
05 11 تشرين الثاني، 14
Thread Priority 
)Process( لكل نيسب أفضلية)أولوية( بالنسبة لغيره من النياسب التي تشترك معه في نفس المهمة  
.Normal يتم إنشاء جميع النياسب بأفضلية  
القيمة الو ف 
النيسب له ا لية العليا Highest 
النيسب له أ لية أعلى من النيسب العادي AboveNormal 
النيسب له أ لية عادية Normal 
النيسب له أ لية أدنى من النيسب العادي BelowNormal 
النيسب له ا لية الدنيا Lowest 
05 12 تشرين الثاني، 14
Concurrency التنافس على الموارد 
ذات فوائد عظيمة جد ا )Multithreaded Application ( التطبيقات متعددة النياسب  
إدارة النياسب ليس أمرا سهلا أبدا .  
إذا حاول نيسبان العمل على غرض مشترك في الذاكرة فإن النتائج ستكون خا ئة .  
يجب التعرف على مفهومين أساسين لحل مشاكل التنافس على الموارد :  
)Critical Sections( المقا ع ال رجة  
وهي طريقة لتحقيق دخول نيسب وا د إلى المقطع الحرج. :)Lock( القف  
ملا ات :  
يجب علينا الحذر عند استعمال القفل بحيث نقفل أصغر جزء من الكود )الشيفرة( التي نحتاج إلى حمايته ضمن البرنامج .  
وسنراها على نطاق )Processes( هذه الأفكار هي موجودة ومطبقة من قبل نظام التشغيل ولكن على نطاق المهام  
النياسب . 
05 13 تشرين الثاني، 14
استخدام المقاطع الحرجة والقفل 
Lock 
{ 
read value from DB 
update value in RAM 
writing value to DB 
} 
05 14 تشرين الثاني، 14
استخدام المقاطع الحرجة والقفل 
Static int [] arr=new int [10]; 
Static int index++; 
if (index>=10) 
return; 
Console.WriteLine(arr[index]); 
05 15 تشرين الثاني، 14
Threads Synchronization التزامن بين النياسب 
نحتاج إلى المزامنة بين النياسب لسببين هما:  
استخدام موارد م تركة  
)Concurrency( التواقت  
Thread B 
Globalx=4 
Thread A 
Globalx=3 
//call function 
Func(Globalx ); 
05 16 تشرين الثاني، 14
Synchronization Implementation تحقيق التزامن 
مسألة ولوج أكثر من نيسب على حساب مصرفي والقيام بعمليات سحب مال من الرصيد .  
سنقوم بعرض المثال مرة من دون تزامن و مرة مع تزامن .  
فقط نيسب واحد في لحظة ما يدخل إلى المقطع الحرج )يضع قفل على الغرض وبقية النياسب تكون في حالة انت ار(.  
بعد أن ينتهي هذ النيسب من تنفيذ كامل المقطع الحرج )والذي يم مناقلة كاملة( يقوم بت رير القف .  
م يقوم ن ام الت ي بإختيار أحد النياسب التي ي الة إنت ار للدخول في المقطع الحرج.  
05 17 تشرين الثاني، 14
Synchronization Classes أصناف التزامن 
لتقديم )Safe( آمنة )method( يحتوي هذه الصنف على مناهج : Interlocked ال ف  
العمليات ا منة على المتحولات المشتركة بين عدة نياسب. 
إما )Transaction( أي أن المنهج هو عبارة عن مناقلة )atomic( هذه المناهج هي ذرية  
أن تتم ب ك كام دون مقا عة من المعال أو أن لا تتم أبد ا . 
من هذ المناه : 
Decrement - Increment  
يضع قيمة في مت و ويعيد القيمة ا لية )القديمة( للمتحول. :Exchange  
: CompareExchange  
05 18 تشرين الثاني، 14
Parallel Programming Example 
n/p  نيسب حيث يقوم كل نيسب بجمع الأعداد من 1 p ولدينا , n  جمع الأعداد من 1  
05 19 تشرين الثاني، 14
Semaphore Class 
في مستوى )Processes( السيما ور : هو عبارة عن طريقة لتحقيق التزامن بين المهام  
نظام التشغيل , يمكن أيض ا استعماله لتحقيق التزامن بين النياسب . 
من )Pool( عبارة عن رقم يُمثل عدد م دود من النياسب التي تست يع ال و على مورد م ترك" أو ) وض  
الموارد التي يتم التنا عليها من قِبَ أك ر من نيسب(. 
مثال الطابعة .  
لاحظة ه ة: قيمة السيمافور هي عدد كبر ي ي صفر ويعبر عن عدد  
س التي تستطيع أن تحص على م رد ب شرة ن د ن إ تظ ر. 
05 20 تشرين الثاني، 14
Mutex Class (Mutual Exclusion) 
طريقة بسيطة للتزامن بحيث يسمح لنيسب وا د بالدخول إلى )Mutex( يعطي هذا الصف 
المقطع الحرج مع إستبعاد البقية )بقية النياسب تبقى في حالة إنتظار إلى أن يقوم هذا النيسب بت رير 
. )Mutex ا 
.)Lock - unlock( آلية Mutex يستعمل ال  
05 21 تشرين الثاني، 14
في شيفرة برنامجك )Deadlock( كيف يمكن أن تتجنب حدوث الإقفال المتبادل 
عندما كل من النيسبين بحاجة إلى معطيات من الأخر )Two Threads( يحدث بين نيسبين  
حتى يكمل عمله. 
هذه المشكلة تعُتبر من أعقد المشاكل التي واجهت مصمي نظم التشغيل.  
هي من مس ولية المبرم . )Threads( و لكن حلها على مستوى النياسب )Processes( تم لها على مستوى المهام  
أيض ا . Mutex وعن إستخدام ال Locks عن إستخدام الأقفال )DeadLock( في الحقيقة تنتج هذه المشكلة  
ن صع جد تصم م تطب ق تعددة س ح ث لا تحدث ف حلق فرغة  
.)DeadLocks( 
05 22 تشرين الثاني، 14
Monitor Class 
قفليتم الحصول عليه من قبل نيسب واحد. .NET في )object( لكل كائن  
يمللك المزايا التالية: Monitor الصف  
عند الطلب . )Monitor( -1 مرتبطة بغرضويتم الحصول على المراقب 
-2 غير مقيد. أي يمكن استدعائه في أي مكان ضمن الكود . 
-3 لا يمكن إنشاء غرضمن هذا الصنف . 
من أجل كل غرض متزامن )يتم الوصول إليه من أكثر من نيسب(:  
نيسب وحيد يملك القفل .  
يحوي النياسب التي تنتظر أن يختارها المعالج لكي تحصل على القفل مع :)Ready Queue( رت جاهزية  
استبعاد بقية النياسب 
يحوي النياسب التي في حالة إنتظارإشارة إيقاظ من نيسب أخر لتستعيد : )Waiting Queue( رت إنت ار  
الحصول على القفل. 
05 23 تشرين الثاني، 14
Monitor Class 
05 24 تشرين الثاني، 14
Producer / Consumere Example 
05 25 تشرين الثاني، 14

More Related Content

PPTX
モデル検査入門 #wacate
PDF
M20_Azure SQL Database 最新アップデートをまとめてキャッチアップ [Microsoft Japan Digital Days]
PPTX
ウォーターフォール・アジャイル・DevOps どんなチームでも開発・テスト・リリースでVSTS/TFSをフル活用する方法
PPT
SQLインジェクション再考
PDF
PostgreSQLの行レベルセキュリティと SpringAOPでマルチテナントの ユーザー間情報漏洩を防止する (JJUG CCC 2021 Spring)
PDF
XSS再入門
PPT
7 client-state manipulation
モデル検査入門 #wacate
M20_Azure SQL Database 最新アップデートをまとめてキャッチアップ [Microsoft Japan Digital Days]
ウォーターフォール・アジャイル・DevOps どんなチームでも開発・テスト・リリースでVSTS/TFSをフル活用する方法
SQLインジェクション再考
PostgreSQLの行レベルセキュリティと SpringAOPでマルチテナントの ユーザー間情報漏洩を防止する (JJUG CCC 2021 Spring)
XSS再入門
7 client-state manipulation

What's hot (20)

PDF
リーンなコードを書こう:実践的なオブジェクト指向設計
PDF
Proxy War
PPTX
オニギリペイのセキュリティ事故に学ぶ安全なサービスの構築法 (PHPカンファレンス2019)
PPTX
reg-suitとQA Wolfを活用したVisual Regression Test
PDF
40分濃縮 PHP classの教室
PDF
Laravelとテストについて
PPTX
C#の書き方
PPTX
最近のやられアプリを試してみた
PDF
Docker ComposeでMastodonが必要なものを梱包する話
PDF
私にとってのテスト
PDF
WebSocketプロトコル
PDF
Ansibleはじめよぉ -Infrastructure as Codeを理解-
PPTX
How to Hack (And Secure) Serverless Apps on Azure
PPTX
もう知らずにはいられないGitOpsをArgoCDで学ぶ【WESEEK Tech Conf #3】
PDF
Ansible troubleshooting 101_202007
PDF
Authlete: セキュアな金融 API 基盤の実現と Google Cloud の活用 #gc_inside
PDF
大規模フロントエンドのクリーンアーキテクチャ化 ~ 年間売上1,000億円企業モノタロウの取組み ~
PDF
Ansibleで始めるインフラ構築自動化
PDF
WebSocket / WebRTCの技術紹介
リーンなコードを書こう:実践的なオブジェクト指向設計
Proxy War
オニギリペイのセキュリティ事故に学ぶ安全なサービスの構築法 (PHPカンファレンス2019)
reg-suitとQA Wolfを活用したVisual Regression Test
40分濃縮 PHP classの教室
Laravelとテストについて
C#の書き方
最近のやられアプリを試してみた
Docker ComposeでMastodonが必要なものを梱包する話
私にとってのテスト
WebSocketプロトコル
Ansibleはじめよぉ -Infrastructure as Codeを理解-
How to Hack (And Secure) Serverless Apps on Azure
もう知らずにはいられないGitOpsをArgoCDで学ぶ【WESEEK Tech Conf #3】
Ansible troubleshooting 101_202007
Authlete: セキュアな金融 API 基盤の実現と Google Cloud の活用 #gc_inside
大規模フロントエンドのクリーンアーキテクチャ化 ~ 年間売上1,000億円企業モノタロウの取組み ~
Ansibleで始めるインフラ構築自動化
WebSocket / WebRTCの技術紹介
Ad

Viewers also liked (13)

PPTX
Login System with Windows/Microsoft Live using OAuth php and mysql
PPTX
8 memory managment & pointers
PPTX
10 system.security.cryptography
PPTX
4 fourth lesson-deployment
PPTX
Introduction To ERP
PPTX
1 first lesson -assemblies
PDF
Fax With Sangoma Gateway
PPTX
2 second lesson- attributes
PPTX
3 third lesson-reflection
PPTX
5 fifth lesson -xml
PPT
Coursera
PPTX
9 networking
PDF
Models for hierarchical data
Login System with Windows/Microsoft Live using OAuth php and mysql
8 memory managment & pointers
10 system.security.cryptography
4 fourth lesson-deployment
Introduction To ERP
1 first lesson -assemblies
Fax With Sangoma Gateway
2 second lesson- attributes
3 third lesson-reflection
5 fifth lesson -xml
Coursera
9 networking
Models for hierarchical data
Ad

Similar to 7 multi threading (20)

PPT
أنواع نظم تشغيل الحاسب
PPT
أنواع نظم التشغيل
PDF
شرح مقرر البرمجة 2 "لغة جافا" - مادة النهائي
PDF
شرح مقرر البرمجة 2 لغة جافا - مادة النهائي
PDF
ال ثريد في البرمجة.pdf
PDF
برمجة اطار عمل .NET باستخدام Visual Basic .NET
PDF
Open source
PDF
Ise rt c2_s14_nour_40714
PPTX
Deadlock Detection Algorithm.pptx
PPT
Linuxppt
PDF
Uml use case diagram
DOC
الباب الاول
PPTX
Part software -
PPT
lec2visual basic2010visual basic2010.ppt
PDF
خطة اختبار لنظام المودل
PPTX
Monitoring server and event viewer
PDF
نموذج خطة زمنية لبرنامج التهيئة لاختبار شهادة الحاسب والانترنت IC3 معهد أبجدي...
PDF
نشاط نظام التشغيل نشاط نظام التشغيل نشاط نظام التشغيل نشاط نظام التشغيل نشاط ...
PPT
The internet and the technology since IT
أنواع نظم تشغيل الحاسب
أنواع نظم التشغيل
شرح مقرر البرمجة 2 "لغة جافا" - مادة النهائي
شرح مقرر البرمجة 2 لغة جافا - مادة النهائي
ال ثريد في البرمجة.pdf
برمجة اطار عمل .NET باستخدام Visual Basic .NET
Open source
Ise rt c2_s14_nour_40714
Deadlock Detection Algorithm.pptx
Linuxppt
Uml use case diagram
الباب الاول
Part software -
lec2visual basic2010visual basic2010.ppt
خطة اختبار لنظام المودل
Monitoring server and event viewer
نموذج خطة زمنية لبرنامج التهيئة لاختبار شهادة الحاسب والانترنت IC3 معهد أبجدي...
نشاط نظام التشغيل نشاط نظام التشغيل نشاط نظام التشغيل نشاط نظام التشغيل نشاط ...
The internet and the technology since IT

More from Mohammad Alyan (11)

PDF
Blue ocean strategy arabic
PPTX
Apple case study
PDF
Introduction to Industry Life Cycles
PPTX
Crowd funding
PPTX
Coursera
PDF
Course index
PDF
التفكير- مصنع للإبداع
PPT
Cloud computing
PPTX
Linq introduction
PPT
10 1 otp all
PPTX
6 ado.net
Blue ocean strategy arabic
Apple case study
Introduction to Industry Life Cycles
Crowd funding
Coursera
Course index
التفكير- مصنع للإبداع
Cloud computing
Linq introduction
10 1 otp all
6 ado.net

7 multi threading

  • 2. Outlines مقدمة في نظم التشغيل  Multithreading لماذا نحتاج إلى تعدد النياسب  Multithreaded كيف نقوم بإنشاء تطبيقات متعددة النياسب  )Thread Terminatation( إيقاف نيسب  Background Threads النياسب التي تعمل في الخلفية  Thread Class  05 2 تشرين الثاني، 14
  • 3. مقدمة في نظم التشغيل هي برنامج قيد التنفيذ . : Process المهمة  كيف يقوم النظام بتشغيل أكثر من برنامج بنفس الوقت ؟  جدولة المهام .  الشرائح الزمنية .  Code Segment Data Segment Stack Segment Heap Segment 05 3 تشرين الثاني، 14
  • 4. مقدمة في نظم التشغيل )Stack( هو عبارة عن مسلك برمجي مستقل في المكدس :)Thread( تعريف النيسب  بعبارة أخرى : هو سياق من التعليمات , )Heap( ويشترك مع غيره من النياسب في الكومة التي نريد تنفيذها على التوازي مع غيرها من التعليمات الأخرى. مجموعة من السجلات الخاصة + Stack في الحقيقة كل نيسب هو عبارة عن  . )PC( بما فيها عداد البرنامج واحد على الأقل . Thread تحوي )Process( كل مهمة  هي من مهمة نظام التشغيل . )Processes Management( إدارة المهام  فهي من مهمة المبرمج . )Threads Management( أما إدارة النياسب  جدولة النياسب , وجدولة المهام .  05 4 تشرين الثاني، 14
  • 5. Multithreading لماذا نحتاج إلى تعدد النياسب )Executing in Background( التنفيذ في الخلفية  إنجاز مهمة اكثر من مرة لتسريع العمل  استغلال أمثل للموارد المتاحة ) في  تنفيذ برنامج لمعالجة صورة معينة يمكن تقسيم العمل على أكثر من نيسب  .)SMP حال وجود بنى تعدد النياسب هو الطريقة الطبيعية لبناء نوع محدد من البرامج  المخدمات بكافة أنواعها .  05 5 تشرين الثاني، 14
  • 6. Multithreaded كيف نقوم بإنشاء تطبيقات متعددة النياسب هو مجموعة من التعليمات التي يتم تنفيذها على التوازي )Thread( علمنا إلى الآن أن النيسب  مع بقية البرنامج . إلى مفوض )أو مندوب يُسمى Method يتم تمرير اسم هذا ال Method هذه التعليمات تمُثل  . Thread وهذا المندوب يتم تسليمه إلى غرض من الصف )Delegate هي مفوض عن مجموعة من التوابع التي تحمل نفس التوقيع . : Delegate  05 6 تشرين الثاني، 14
  • 7. )Thread Terminatation( إيقاف نيسب كيف يتم إيقاف النيسب ومتى يتنهي عمله؟  . Abort() إيقاف النيسب بشكل قسري عن طريق المنهج  هذه الطريقة غير مُحبذة .  05 7 تشرين الثاني، 14
  • 8. Background Threads النياسب التي تعمل في الخلفية )Background( والتي تعمل في الخلفية )Processes( نظام التشغيل يستعمل مجموعة من المهام  خدمات ويندوز" أما في نظام " )Windows Services( وتسمى في نظام ويندوز باسم . daemons فتسُمى Linux/Unix المهام التي تعمل في الخلفية يكون لها أفضلية أقل من المهام التي تعمل في الأمام .  نفس الفكرة يمكن تطبيقها على النياسب حيث يمكننا أن نجعل نيسب معين يعمل في الخلفية.  والتي IsBackground عن طريق الخاصية )Background( يمكن أن نجعل نيسب ما يعمل في الخلفية  .true يتم ضبطها بالقيمة .)forground( عند إنتهاء أخر نيسب أمامي )Background( تنتهي النياسب الخلفية  05 8 تشرين الثاني، 14
  • 9. Thread Class نيسب في مستوى نظام التشغيل . System.Threading.Thread يمثل الصنف  :Thread أهم الخصائص الموجود في الصنف  الخا ية الو ف إلى النيسب المنفذ الي ا . )Reference ( تعيد مرجع CurrentThread إذا كان النيسب قد بدأ ولم ينتهي بعد . true تعيد IsAlive إذا كان النيسب يعم ي الخلفية . true تعيد ISBackground اسم النيسب. )set or get( تعيد أو ت دد Name أ لية النيسب. )set or get( تعيد أو ت دد Priority الة النيسب. )set or get( تعيد أو ت دد ThreadState 05 9 تشرين الثاني، 14
  • 10. Thread Class :Thread أهم المناهج الموجود في الصنف  الو ف )method( ال ريقة البدأ بتنفيذ بتنفيذ النيسب Start تنهي تنفيذ النيسب ب ك وري. Abort waitSleepJoin تقا ع النيسب الذي يكون ي الة Interrupt إنت ار نيسب معين )النيسب ال مستدعي لهذا المنه ( تى ينتهي تنفيذ هذا النيسب. Join إيقاف م قت-( -pause( إرجا عم النيسب لفترة ير م دودة Suspend )Suspend( تب عم التابع السابق Resume تنوم النيسب لفترة م ددة . Sleep 05 10 تشرين الثاني، 14
  • 11. ThreadState مىTلمُس hا )Ernuem(a داد d ن التع Sضم t دةa وجو tم eهي s حل اكل لانيسب ت حا اللة نأيو عد سة حا بلا ت و  القيمة النيسب يعم ا ن Running )Abort( النيسب قد استقب ا ارة إيقاف StopRequested )pause( النيسب قد استقب ا ارة إيقاف م قت SuspendRequested النيسب يعم ي الخلفية Background Start() النيسب تم إن ا ولكن لم يتم تنفيذ المنه Unstarted النيسب تم إيقا ه ) ( Stopped .Join Sleep أو wait النيسب متوقف ن استدعا WaitSleepJoin النيسب متوقف ب ك م قت Suspended يتنق النيسب إلى هذ ال الة عندما نكون قد استدعينا المنه AbortRequested للنيسب. ولكن هذا النيسب لم يستقب بعد إ ارة ا يقاف Abort )ThreadAbortException( والتي يتم التعبير عنها با ست نا والذي ينهي عم هذا النيسب. و النيسب قد توقف)مات( )AbortRequested( نف ال الة السابقة Aborted .Stopped ولكن اته لم تت ير إلى ال الة 05 11 تشرين الثاني، 14
  • 12. Thread Priority )Process( لكل نيسب أفضلية)أولوية( بالنسبة لغيره من النياسب التي تشترك معه في نفس المهمة  .Normal يتم إنشاء جميع النياسب بأفضلية  القيمة الو ف النيسب له ا لية العليا Highest النيسب له أ لية أعلى من النيسب العادي AboveNormal النيسب له أ لية عادية Normal النيسب له أ لية أدنى من النيسب العادي BelowNormal النيسب له ا لية الدنيا Lowest 05 12 تشرين الثاني، 14
  • 13. Concurrency التنافس على الموارد ذات فوائد عظيمة جد ا )Multithreaded Application ( التطبيقات متعددة النياسب  إدارة النياسب ليس أمرا سهلا أبدا .  إذا حاول نيسبان العمل على غرض مشترك في الذاكرة فإن النتائج ستكون خا ئة .  يجب التعرف على مفهومين أساسين لحل مشاكل التنافس على الموارد :  )Critical Sections( المقا ع ال رجة  وهي طريقة لتحقيق دخول نيسب وا د إلى المقطع الحرج. :)Lock( القف  ملا ات :  يجب علينا الحذر عند استعمال القفل بحيث نقفل أصغر جزء من الكود )الشيفرة( التي نحتاج إلى حمايته ضمن البرنامج .  وسنراها على نطاق )Processes( هذه الأفكار هي موجودة ومطبقة من قبل نظام التشغيل ولكن على نطاق المهام  النياسب . 05 13 تشرين الثاني، 14
  • 14. استخدام المقاطع الحرجة والقفل Lock { read value from DB update value in RAM writing value to DB } 05 14 تشرين الثاني، 14
  • 15. استخدام المقاطع الحرجة والقفل Static int [] arr=new int [10]; Static int index++; if (index>=10) return; Console.WriteLine(arr[index]); 05 15 تشرين الثاني، 14
  • 16. Threads Synchronization التزامن بين النياسب نحتاج إلى المزامنة بين النياسب لسببين هما:  استخدام موارد م تركة  )Concurrency( التواقت  Thread B Globalx=4 Thread A Globalx=3 //call function Func(Globalx ); 05 16 تشرين الثاني، 14
  • 17. Synchronization Implementation تحقيق التزامن مسألة ولوج أكثر من نيسب على حساب مصرفي والقيام بعمليات سحب مال من الرصيد .  سنقوم بعرض المثال مرة من دون تزامن و مرة مع تزامن .  فقط نيسب واحد في لحظة ما يدخل إلى المقطع الحرج )يضع قفل على الغرض وبقية النياسب تكون في حالة انت ار(.  بعد أن ينتهي هذ النيسب من تنفيذ كامل المقطع الحرج )والذي يم مناقلة كاملة( يقوم بت رير القف .  م يقوم ن ام الت ي بإختيار أحد النياسب التي ي الة إنت ار للدخول في المقطع الحرج.  05 17 تشرين الثاني، 14
  • 18. Synchronization Classes أصناف التزامن لتقديم )Safe( آمنة )method( يحتوي هذه الصنف على مناهج : Interlocked ال ف  العمليات ا منة على المتحولات المشتركة بين عدة نياسب. إما )Transaction( أي أن المنهج هو عبارة عن مناقلة )atomic( هذه المناهج هي ذرية  أن تتم ب ك كام دون مقا عة من المعال أو أن لا تتم أبد ا . من هذ المناه : Decrement - Increment  يضع قيمة في مت و ويعيد القيمة ا لية )القديمة( للمتحول. :Exchange  : CompareExchange  05 18 تشرين الثاني، 14
  • 19. Parallel Programming Example n/p  نيسب حيث يقوم كل نيسب بجمع الأعداد من 1 p ولدينا , n  جمع الأعداد من 1  05 19 تشرين الثاني، 14
  • 20. Semaphore Class في مستوى )Processes( السيما ور : هو عبارة عن طريقة لتحقيق التزامن بين المهام  نظام التشغيل , يمكن أيض ا استعماله لتحقيق التزامن بين النياسب . من )Pool( عبارة عن رقم يُمثل عدد م دود من النياسب التي تست يع ال و على مورد م ترك" أو ) وض  الموارد التي يتم التنا عليها من قِبَ أك ر من نيسب(. مثال الطابعة .  لاحظة ه ة: قيمة السيمافور هي عدد كبر ي ي صفر ويعبر عن عدد  س التي تستطيع أن تحص على م رد ب شرة ن د ن إ تظ ر. 05 20 تشرين الثاني، 14
  • 21. Mutex Class (Mutual Exclusion) طريقة بسيطة للتزامن بحيث يسمح لنيسب وا د بالدخول إلى )Mutex( يعطي هذا الصف المقطع الحرج مع إستبعاد البقية )بقية النياسب تبقى في حالة إنتظار إلى أن يقوم هذا النيسب بت رير . )Mutex ا .)Lock - unlock( آلية Mutex يستعمل ال  05 21 تشرين الثاني، 14
  • 22. في شيفرة برنامجك )Deadlock( كيف يمكن أن تتجنب حدوث الإقفال المتبادل عندما كل من النيسبين بحاجة إلى معطيات من الأخر )Two Threads( يحدث بين نيسبين  حتى يكمل عمله. هذه المشكلة تعُتبر من أعقد المشاكل التي واجهت مصمي نظم التشغيل.  هي من مس ولية المبرم . )Threads( و لكن حلها على مستوى النياسب )Processes( تم لها على مستوى المهام  أيض ا . Mutex وعن إستخدام ال Locks عن إستخدام الأقفال )DeadLock( في الحقيقة تنتج هذه المشكلة  ن صع جد تصم م تطب ق تعددة س ح ث لا تحدث ف حلق فرغة  .)DeadLocks( 05 22 تشرين الثاني، 14
  • 23. Monitor Class قفليتم الحصول عليه من قبل نيسب واحد. .NET في )object( لكل كائن  يمللك المزايا التالية: Monitor الصف  عند الطلب . )Monitor( -1 مرتبطة بغرضويتم الحصول على المراقب -2 غير مقيد. أي يمكن استدعائه في أي مكان ضمن الكود . -3 لا يمكن إنشاء غرضمن هذا الصنف . من أجل كل غرض متزامن )يتم الوصول إليه من أكثر من نيسب(:  نيسب وحيد يملك القفل .  يحوي النياسب التي تنتظر أن يختارها المعالج لكي تحصل على القفل مع :)Ready Queue( رت جاهزية  استبعاد بقية النياسب يحوي النياسب التي في حالة إنتظارإشارة إيقاظ من نيسب أخر لتستعيد : )Waiting Queue( رت إنت ار  الحصول على القفل. 05 23 تشرين الثاني، 14
  • 24. Monitor Class 05 24 تشرين الثاني، 14
  • 25. Producer / Consumere Example 05 25 تشرين الثاني، 14