لم عسوعة عط ماع ١
امعساوعفاء 2 فوط عم المعسبوعة سدم
عو مط فععومعطا 2 2 عسلدلا. 1ه 2096583 260151
عقلوط < ع1 طقدة .مع قوط
طدة فدع
يظهر لك المتال التالى كيف يمكن استخدام العنصر 014/0:682 886180100 للبحت عن الملفات في مسار غير متزامن وهى نفس المشكلة
التي طرحت عند الحديث عن 1018:5868 020300128101/0168/ر15 708 في هذا الموضوع سلا وبهذا يمكنك مقارنة الطريقتين بسهولة.
وستكون النسخة الجديدة المحتمدة على 000141071682 88616820 أكثر تعفيدا بظيل بسبب أنها تدعم الإلغاء لعمل غير متزامن
(ومنعاة 8ه) افا عم وعلدء سذطه
قلع
١ وعنع265. لمفسوعقاء 2 ومدعاة عم لطعم سنط
سبع ممعم اعم عط عام ١
(ممتع5 08) عفنا معلا ج وعلذع
ووم - لمعا
اذا فم وعد
لعفم ) و عدعمعاء عد طاعة . وعم معدم ص1 ومتعة عم نه طعفة عوط
عابعلل
طدة فدع
1 - عسياف. معلل 26 عمسف . و1 . وعل اطق ج 10692 هل لذ 0<
علا
( 02205 .ملعة عنا وف
م5 قمع
12664 برسم مااع لطمية .1 اعلا 6 ع0 2601096 5 6841ل
الممطاطقه والممععبط ممع افقة عوقدفع 5ق عط إملوهدة ١
طك قمع
والكود هنا بشرح نفسه ماعدا إجراء الحدث 0606650018080 حيت بجب أن يتضمن الكود استدعاء للطريفة
إضافه للواجهة ومع ذلك فاستدعاء هذه الطريقة سيسبب استدعاءات للإجراء 060826556030660 مما يسبب إطلاق امتتناء
1100م 53001/80105666 ومن أجل عدم حدوث هذا يثم استخدام حفل منطفي مساعد 81/000655 لتجنب حدوت مثل هذه
لاحظ أيضا أن هنا التطبيق لا بحتاج للإعلام عن نسبة التضم للمسار الرئيسى ويستخدم الطريقة | 8600184008855 فط لتنفيذ جزء من
الكود في المسار الرئيسي للبرتامج والرسالة الفعلية لالإإظهار يتم تمريرها للخاسية 8258لا وإن كان تطبيظك يستخدم :2ط 006087855 أو
أي مؤشر آخر للتدم يجب عليك تجتب استدعاء الطريغة 82855 8800:0120 بدون داعي لأنها نتسبب بتبديل المسارات وتكون مكلفة كتيرا
عندما يتلق الأمر بوفت المعالجة وفى هذه الحالة بجب عليك تخزين مؤشر التضم في حظل في الفئة واستدعاء الطريقة فط في حالة حدوت
وعد مم قعععومعم #عقسلوع ١
عو عم معي 2 عو معام معا لمعت
كد قمع
استخدام بحيرة المسارات 0001 111726320 115 11511718
إنشاء الحديد من المسارات قد يسبب انخفاض أداء اأنظام بسرعة وخاصة عندما تصرف هذه المشارات معظم وقتها في حالة سبات
أويعاد تشغيلها بصورة دورية بغرض قراءة مصدر ما أو تحديث الإظهار . ولتحسين أداء كودك يمكتك إعلدة تريب بحيرة المسارات يشكل
يضمن أكفاً استخدام للموارد باستخدام بحض الأغراض 068645 الموجودة فى مجل الأسماء 0106 58807.70388/ر5 بحيرة المسارات
يتم إنشاء بحيرة المسارات عندما تقوم باستدعاء النالة 56010/01101600 لا01060 .7038309001 والتى تحتاج لإجراء مفوض
0816881 »10/840118 وعرض 0686 اختباري بستخدم لتمرير البياثات للمسار والإجراء المفوض بجب أن يشير إلى 500 بمرر
له محدد وحيد من التوع 06(864 بحيت تكون قيمته محتوية على البيانات التي تريد تمريرها للمساز أو 10020106 عندما لا توجد بيانات
تريد تمريرها وقطعة الكود الثالية تبين لك كيف يمكنك استخدام عدد كبير من المسارات لاستدعاء إجراء في فئة 61255
8ه عطودعوعطودا معلا فم لفق سدم
(القسعة قنطع د عي عمل اعد مع «متعدسعه عمد المقدمتعثففة دقدة '
االلفمم غطاع سم فم ععطء ب عتم لفق عط هع '
عاعلل
دعق قمع
والمسار الحامل بمكنه تحديد فبما إذا كان قد أخذ من بحيزة المسارات أم لا بتحري قيمة الخاسبة
015716808001710 701820.000180171788 ويمكنك معرفة العدد الأقصى للمسارات في البركة باستدعاء الطريقة الساكتة.
5 611/4210 001.6 701866808 وعدد المسارات المتاحة حاليا باستدعاء الطريقة الساكنة 12701286805 0ف1تةلاف1اع 001.6 70106808
كمائم إضافة طريقة جديدة 5811/8«70:36805 في الفريموورك 2 .2.0 0:16 /8:8 6200 7ح لم تمكتك من تغيير العدد الأقصى للمسارات
الموجودة فى البركة
فى بعضن الأحبان قد تحتاز فى نخطة تساول هل أقوم بإتشاء المسار بنفسي أم أستتيره من بحيرة المسازات, وتظهر هنا قاسدة جيدة: استخدم
كثيرا وفى معظم الحالات بشكل عام يجب عليك استخدام بحيرة المسارات.
تخدم الفريموورك عدة أنواع من المؤقئات كل منها يمتلك نقلط فوئه وضحفه. متلا يحب عليك استخدام التحكم
يمئلك واجهة للمستخدم يجب علبك عندها استخدام الفئة 100.70/820105.710086ع54/ر5 أو الفئة 51/51600.7100615.710082 وتعتير هانان
فى مجل الأسماء ج51600.701388010/ر5 يدم طريفة بسيطة لمؤفت يستدعي إجرائية محددة حيت يمكنك استخدام
هذه الفلة لجدولة عمل فى وت مبين فى المستغبل ويمكن تتفيذه بالتكرار الذي تحتاجه مهما يكن ابتداء من مرة واحدة فما فوق وبانى المؤفت
الإجراء من النوع دان5 بأخذ محدد واحد من النوع :086
غرض 06666 بتم تمريره للإجراء الذي يشير إليه المغوض ويمكن أن يكون من عدة أنواع كسلسلة نصية أو مصفوفة أو
مجموعة 6011801600 أو أي نوع ديانات آخر يحتوي على البانات الني ميتم تمريرها للإجراء وإن لم تكن تحتاج لتمربر قيم
استخدم 1016106م بكل بسللة
* قيمة من النوع 71065080 تحدد زمن المؤقت الذي سيتم استدعاء الإجراء بعده كما يمكن تحديدها باستخدام قيمة من النوع 1008
أى 101016886 وفي هذه الحالة يقاس الزمن بالميللي تانية ( 1000/1 من التانية) وعند تمرير ©71008014.1000014 كغيمة لا يتم
إطلاق المؤفت أبنا أو القيمة 0 صغر لإطلاق المؤفت مباشرة
©0011 17101600.10 لإطلاق المؤقت مرة واحدة ففطر
وهذه العم التي تمررها لباني المؤقت غير متوفرة كخصائص. وبعد تشغيل المؤفت يمكنك تخبير هذه الغيم فقط باستخدام الطريقة 613088
0 والتى تأخذ محددين بحددان وقت التشغيل وفئرة زمن المؤفت ويمئلك 86ر00 710087 إجراء م500 الذي يقوم بإقاف المؤقت
ومتدلا دع
نفع معي لام ةطللقة عط ١
وفى النهاية تجدر ملاحظة أن الإجراء المستدعى بثم قتعيذه على مسار مأخوذ من بركة المسارات لذا يجب عليك التحكم بالمتغبرات
والمصادر الأخرى المستخدمة من قبل المسار الرئيسي للبرنامج عبر استخدام ما بدعى بتزامن المسارات.
تزامن المسارات (5171111170111221101 1111620
امعسعتما5 عام رك ع1
خلال زمن التشغيل لا بوجد شئ يضمن لك أن يسير الكود بشكل نظامي بدون مقاطعات وتكون عملية التشغيل يدون مقاطعات عملية قاسية
على نظام التشغيل وخاصة عندما يكون عبارة عن ديئة متعددة المهام وقى معظم الحالات التي متحتاجها ستكون قانعا بلدقة ضمن البرنامج
الواحد وذلك عند معالجة الكود فعلى سيل المتال يكون كافبا لك ضمان أن مسار تنفيذ واحد ضمن التطبيق الحالي بسقطيع تتفيذ قطلعة معيئة
من الكود في وقُت محدد ويمكنك تحفق ذلك بتضمين قطعة الكود تلك ضمن كثلة 2اع10ع5/0 5110610216..508 والذي بحتاج إلى متغبر
كمحدد له محا المتطلباث التالية:
بجب أن يكون مشترك بين جميع المسارات ويكون في العادة متغير على مستوى الفئة وبدون الخلسية.
٠ يجب أن يكون من نوع مرجعى متل 50000 أو :0666 واستخدام أنواع القيمة ينتج عنه خطأً في النرجمة
٠ يجب أن لا يحتوى على القيمة 1401006 وشى حال تمرير العبمة 140451108 سيسيب أخطاء فى زمن التنفيذ
١ امع وطه معلا عم لم11 معدم مسلط
العمل معدم عل متعموة
ع1 مب هذ عست لمعيه عطاء عنامرة '
عل طسم) ع نعل 0608012
عام تعصئرة فف2
طدة فدع
والكود السايق يستخدم المتغير 0050161066 للتحكم بالوصول للغرض 6005018 وهو يشكل المصدر الوحيد المشترك بين جميع
والتى يمكن أن تستخدم نس المتغير المحلى أو عدة متغيرات مختلعة من أجل اختلاف البصمة وهنا يجب عليك امتخدام متغيرا
مميزا من أجل كل نوع من أنواع المصادر المشتركة التي بجب عمل التزامن من اجلها أو من أجل مجموعة التماير التي يجب تتفيذها ضمن
المسار في نفس الوق
وعندما تستخدم كثلة )5/0610 يتضمن الكود تلفائيا كتلة /(70 701/...500 مخفية من أجل ضمان تحرير الضل بشكل صحيح إذا تم إطلاق
0558066 لفئة ما وجميع المسارات العاملة ضمن إجراء في ذلك التواجد ع68806م1 للفئة يمكنك تمرير ع 0م لعبارة ال ؟اع0610/ر5 وذلك
يسبب أن هذا الغرض بحفق كل المتطلبات (يمكن الوصول إليه من جميع المسارات- وهو قيمة مرجعية - وبالتأكيد هو ليس 104010
علا لم511
للدم تعصرة فف2
ملاحظة: يمكنك استخدام 18م بهذه الطريقة فط إن كنت تريد عمل التزامن على مصندر وحيد كملف محدد مثالا أو نافذة الكونسول 6005018
1/1000 وإن كان لديك عدة كثل تزامن التي تحمي عدة مصادر متستخدم بشكل تلفائي عدة متغيرات كمحددات لكئلة 00610(6/ر5. والشئ
الذي له أهمية أكبر مما ذكر هو أنه بجب علبك استخدام .8/06 كمحدد فط إذا كانت الفئة غير مرئية خارج المجمع الحالى عدا ذلك بمكن
محدد وبشكل عام لا بجب علبك استخدام غرض 0686 عام مرئى من مجمعات أخرى كمحدد لكئلة 6اع0210/ر5. وتجدر الملاحظة أن
لحماية الطريقة الساكتة.
عندما تستخدم عبارات 51/010216 معستشة للغام بالتزامن لأغراض مخلفة من الضروري استخدام تسلسل تعشيش متطلق أيتما احتجث له
فى تطبيظك فلتحري عن الأففل بلتسلسل المطابق ذائه يجنبك الوصول إلى حالة الأفخل الميئة خلال الحديد من أجزاء التطبيق وهذه القاعدة
تتطبق أيضنا عندما تقوم دالة تحنوي على 6 0610/ر5 باستدعاء دالة أخرى تحنوي على 6م06 51/061
بلعم تعصئرة قف
عدم ع5 قمع
اعتبارات الأداء والتواجد الكسول ر01ت10721 10518 ترعها ف0ية كصمتنع 10كلم عع سم سما 1
تضمين جميع الأكواد التي تستخدم متغيرات مشتركة ضمن كئلة 50106102٠ يؤدي إلى إبطاء تطبيظك كثيرا أو تخفيض أداؤه بشكل
ملحوظ ويشكل خاص عندما يثم تشغيله على حاسب متعدد المحالجات فإن استطعت تجنب استخدام كئلة #©0610/ر9 بدون تعريض تكامل
البيذات للخطر يجب عليك القبام به قلعيا فتلا تخيل أنك تستخدم نمط وحيد بتواجد كسول 1054800724500 102 في ديئة متعددة المسارات
«ماعلومدة عم ععمةافد1_مه لمعقطة مسلط
لاعمكةعمطه ال متعفرة
- #ممفء فم همتع
عع قمع
اولمع قمع
ففقاء قمع
تكمن المشكلة في الكود السابق أن معظم الوصولات للخاصية لا بحتاج إلى تزامن وذلك لأن المتغبر الخاص 001054806 يتم تعييئه مره
واحدة في المرة الأولى التي يتم فيها قراءة الخاسنية وفى ما بلي طريقة أفضل لتحقبق التصرف المطلوب
مم علوهدة وعمكء
«مااعتومدة اعم ١ ععمة عفدت عم موعع ولممقمعة ممعفطة عتتطيع
١ لمم علوهدة معلا 2 #مسمعمدت_ه معط ومنطاملا 15 #عمم ممه ع1
عد قمع
عع قمع
المع قمع
دعقا قمع
مشكلة أخرى متحلقة بالمسارات في الدوث تبث هي أن لبس جميع أغراض الدوث نبث عع زه 017 قابلة للمشاركة بأمان عبر
المسارات 0-5268 1:68 278 ىم عزظاه 0157 الج 004 فعتدما تقوم بكتابة تطبيق متعدد المسارات يجب عليك التأكد دوما من الوثائق للتأكد
من أن الأغراض والطرائق التي تستخدمها آمنة للاستخدام عبر المسارات فعلى مديل المتل جميع الطرق السلكنة تلمئات بمععع8 د 1484605
أمنة عبر المسارات ولكن الطرق الغير ساكنة خير آمنة فيجب عدم استخدامها ضمن مسار مختلف وكذلك بعض أغراض الدوث نيث مثلَ
001015 300 615عزطه 011015ع 10/10001/5 لها العنيد من الحدود التي تجعل فط المسار الذي أنسَها بمكنه استدعاء طرقها وخصئصها
العديد من الأغراض الغير آمنة عبر المسارات بطبيعتها متل أكتاتقعم م 125116 م عناعنية م أكنا50:6 م5126 و
:1101866206 :©7©0110/06 و التحالير النظامية تدم طريقة ساكنة قابلة للتزامن تعيد عرض أمن للمسارات نمعزطه ع10:680-5386
مكافئ للذي تم تمريره كما أن معظمها بعرض الخلسية 0203001280/ر155 التى تحيد 7008 عندما نتحامل مع نسخة آمنة عبر المسارات
( مقعم معلا عم له سد
تذكر دائما أن التحامل مع هذه النسخة المنزامتة يكون أبطأ من النسخة الغير متزامنة وذلك يسبب أن كل طريغة تمر عبر سلسلة من
الفحوصات الداخلية وفى معظم الحالات يمكنك كثلبة كود فعال أكثر إنا استخدمت المصفوفات والمجموعات العادية 300 2011/5 8810132
5 وقمت بمزامتة عناسصيرها باستخدام كثلة 5/0106 الحادية
عاباطصات صسمتتهتتسصمعطع 5 ع1
استخدام الخاسية 0012211007 :5/00 .01615 01106.60 51/5101.80011012.8600 هى أاسط طريفة لتحفيق الوصول
المتزامن للغرض 06666 بأكمله ويذلك يستطيع مسار واحد فقط الوصول إلى حقوله وطرائقه وبذلك أي مسار بستطيع استخدام الفئة ولكن
مسار واحد فقط يستطيع تنفيذ أحد طرائقه إذا كانت الطريقة تتغذ كودا ضمن الفئة 61855 وأي مسار بحاول استخدام هذه الفئة عليه الانتظار
وتكلمات أخرى وكأن هنك كتل 5000108 تخلف كلفة طرائق الفلة مستخدمة نفس متغير الإففال. والكود التالي يبين كيف يمكنك مزامنة فل
باستخدام الخلسية ع 244016008 1100 51/060200128 لاحظ أيضا أن الفئة بجب أن يثم ورائتها من 600481800000664 ليثم تعليمها ك
عام خط عم مق عدم وغلعغطدة
و خلسية التزامن 861101846 511060200128100 تضمن الوصول المتزامن لجميع الحقول والخصائص والطرق ولكنها لا توفر النزامن
للأعضاء السلكتين 00800865 589416 وهى تأخذ محددا اختياريا يمكن أن تكون قيمته 70008 أو ع15ع أو أحد التوابت الني توقرها الفئة
عأناطانائهه 00122110:ا 10ر5 والتي يمكنك الاطلاع عليها من مكتبة 11501
فى معظم الحالات مزامنة فئة كاملة ستهل التطبيق وحماية بعض الطرائق فى تلك الغئة يكون كايا فى معظم الحالات حيت يمكنك
تطبيق هذا بتعليف كود الطريقة أو يمكنك استخدام تفنية أسط مينية على الصفة
وفقه 204
فتطبيق الصفة 1م0100 1/0650 على عدة طرائق في الفئة يؤدي نفس الغرض من تخليف كامل ذلك الطرائق بكئلة »5/0610 والني تستخدم
عم كمتغير إقفل وبكلمات أخرى أي مسار يستدعي طريقة معلمة بالخلسية 808100010001 سوف يمتع أي مسار آخر من استدعاء
الطريفة المعلمة بالخاسية 106660001001 كما يمكنك استخدام هذه الخاسية على الطرائق الساكنة ويكون متغير الغرض الذي يستخدم
ضمتيا لضل الطرائق الساكنة مظلف عن متغير العرض المستخدم لضل الطرائق الأخرى للفئة 00840005 10503068 ونهذا فالمسار الذي
يستدعي طريقة ساكنة معلمة بلصفة 1م8/081000100 لا بمتع مسار آخر من استدعاء الطرائق الغير ساكتة 00810005 10548066 والمعلمة
تنفس السنفة
عندما تتم مشاركة متغير عبر عدة مسارات والتطبيق يعمل على حاسب متعدد المحالجات بجب علبك وضع احتمال حدوت أخطاء
إضافية فى الحسبان وتكمن المشكلة في النظام متعدد المحالجات في أن لكل معالج الكاش الخاص به ولهذا فإذا قمت بالكتاية على حفل في فئة
على مسار ميتم كتابة العجمة الجديدة فى الكاشن المرقبط مع المعالج الحالى ولا يتم نشرها مباشزة إلى الكاش الخاص بيقية المحالجات بحبتث
يمكنهم جميما رؤئية العجمة الجديدة. كما تحدت مشكلة مشلهة فى الأنظمة ذات المعالج 64 بت الذي يمكنه إعادة ترتيب تنفيذ كتل عبارات
الكود متضمنا عمليات الغراءة والكتابة في الذاكرة وعملية إعادة القرئيب لم يكن لها قير ظاهر حتى الآن من أجل مسار واحد يستخدم جزءا
محبنا من الذاكرة ولكن ريما سيسبب ذلك مشكلة عندما يتم الوصول إلى نفس الجزء من الذاكرة بواسلة عدة مسارات. وتوفر الفريموورك
حلان لهذه المشكلة وهما وزج من الطرائق . 1/01341168680 د 1/0125121//0166 والطريقة 80001788127 1/1 ويوفرها جميعا النوع
تمكنك الطريقة ©1/018411810/818 من كتابة متغير والتأكد من أن العيمة الجديدة يتم كثلتها آليا في الذاكرة المشتركة بين جميع المعالجات ولا
تبقى فى المسجل الخاص بالمعالج حيث تكون مخفية عن بغية المسارات وبلمتل تمكتك الطريقة 1/0184(188880 من قراءة المتغير بطريقة
آمنة لأنها تجبر النظام على تربع جميع ذواكر الكاشن الموجودة قبل تنفيذ الحملية وكلذ الطريكان محملتان تحمياذ زائنا 01/601080 بحيث
+ علو
علوم , عسلة تتفة عقطع) ع ع1 نه 20.1101 ععط2
دعق قف
والطريشان المذكورثان تحملان بشكل جيد عندما نتحامل مع المتغيرات الرقمية أو الغرضية 0686 ولكن لا يمكن استخدامهما من أجل
أنواع أخرى من المتغيرات لأنه لا يمكنك استخدام نسخة الدالة الني تأخذ متغير من النوع 00868 بسبب عدم إمكلابة الاعتماد على عملبة
التحويل عندما يكون المتغير ممررا بالمرجع مما بقودنا إلى الطريقة 1/480000/88/8186 التي تقوم بتفريع محتويات جميع ذواكر الكاشن