قريبًا ، من 29 إلى 30 نوفمبر في سان بطرسبرغ ومن 6 إلى 7 ديسمبر في موسكو ، سنطلق ندوة .NET السادسة . هذه المرة على موضوع multithreading والقدرة التنافسية. لقد سبق أن كتبنا عن هذا عدة مرات على حبري ، ولكن اليوم هناك سبب منفصل لذلك: الندوة حصرية حقيقية . سيتم وصف تشغيل تزامن الهجين البدائي: Monitor
. نعم ، الشيء المألوف القليل يستحق تقرير منفصل. بعد كل شيء ، في عمله يأخذ في الاعتبار كل من تردد المعالج وعدد النوى ، ويأخذ في الاعتبار قافلة القافلة / الجوع وعموما معقدة للغاية.
وفي نهاية مقالة الترفيه ، أقترح اجتياز اختبارين مصغرين حول تعدد العمليات.

سيناريو صغير من الورشة
أهم شيء يأتي من نظام التشغيل هو جدولة مؤشر الترابط. بعد كل شيء ، يمكنهم العمل بالتوازي مع بعضهم البعض (عندما يتم تشغيلهم حاليًا على نوى مختلفة) ، وفي كثير من الأحيان (إذا كنا نتحدث عن نفس المواضيع) - بالتتابع. بعد كل شيء ، لا يعطي نظام التشغيل الكثير من الوقت للتنفيذ - للجميع ، وبعد ذلك يعطي الوقت للآخرين. الثانية - لهذا الجزء - الكم - يمكن تخصيص كمية مختلفة من الوقت. على سبيل المثال ، اعتمادًا على إصدار نظام التشغيل الذي نستخدمه: الخادم أو المستخدم ، ما إذا كان مؤشر ترابط واجهة المستخدم هو سلسلة عمليات مع الإطار النشط الحالي. ثالثًا ، هناك أولويات ومفهوم "مزاحمة تعدد المهام" ، عندما يمكن أن يخسرها التدفق الخاص بك ، بعد أن تلقيت الكم فقط ، لأن موضوع آخر مع أولوية أعلى شكلت. اتضح أن تطبيقنا يعتمد بدرجة كبيرة على البيئة التي يعمل فيها. على سبيل المثال ، ستشعر بعض خدمة الحساب بأنها أفضل على إصدار خادم نظام التشغيل (أو مع إعدادات الأداء المناسبة) عندما لا تكون هناك خدمات أخرى على الجهاز على الإطلاق: ستكون الكمية طويلة ، وسيكون هناك الكثير من الوقت الكمي.
ولكن هنا يثور سؤال آخر: إذا كان مؤشر الترابط الخاص بنا في هذا التكوين ينشئ قفلًا على مستوى kernel (على سبيل المثال ، Semaphore (1)) ، فإن الخيط الثاني يحصل على القفل ويدخل في هذا القفل ، فإنه سيبقى في نظام تشغيل الخادم أطول بكثير مما كان عليه سيكون في العرف. لماذا؟ نعم ، لأن شريحة وقت الخادم أطول بستة أضعاف من شريحة العميل وسيتعين على هذا الخيط أولاً الانتظار حتى يصل الخيط الأول إلى نقطة تحرير القفل ، ثم عندما يحصل على كمية جديدة.
ومع ذلك ، هناك مساعدة لمثل هذه الحالة: عندما يتم إصدار القفل ، يكون لجميع سلاسل العمليات التي كانت تتوقعها مؤقتًا (بمقدار 1 كم) أولوية على سلاسل العمليات الأخرى وسيحصل مؤشر الترابط الثاني على وقت المعالج فورًا.
CLRium 6
هذه الفقرات الثلاث هي 5 ٪ موجزة من التقرير الرابع. وهو غني بالفعل بالمعلومات التي يمكن استخدامها على جميع المستويات: من العمل مع بدائل التزامن إلى العمل مع المكتبات عالية المستوى. وبرنامجنا هو هذا:
- سوف ننظر في أنواع العمليات. هناك الكثير منهم ، ونحن نستخدم اثنين منهم من القوة: هذه هي العادية و ModernApp.
- ثلاثة تقارير متتالية هي مؤشرات ترابط على مستوى نظام التشغيل: الجدولة على أنظمة أحادية المركز ومتعددة النواة وأنظمة NUMA. تختلف القواعد في كل مكان ويجب أخذ ذلك في الاعتبار في عملك ؛
- تحليل عمل بدايات التزامن على مستوى الوقت الكم. تعلمتم جميعًا التحدث عن القفل / Mutex / Semaphore في المقابلات. لا جدوى من التكرار ، وبالتالي سنزود أنفسنا بالجداول الزمنية ونرى كيف يتم توزيع الكوانتا بين المعالجات على جميع بدائل التزامن: Kernel-Space ، و User-Space ، وتلك المختلطة.
- ورشة عمل حقيقية حصرية: هيكل
Monitor
البدائية. حقيقة أن lock(){}
الكشف عنها في try { } finally { }
كنت تعرفها بالفعل بدون لي ، ولكن ما تم Monitor.Enter
، Monitor.Leave
، Monitor.TryEnter
هو موضوع لجحيم تقرير منفصل ، كثيف ، كامل. صدقوني ، كل شيء بداخله رائع جداً. هذا هو بدائية التزامن الهجين الذي تم تصميمه لتجنب الجوع ، وفرار القفل الزائد وقفل القفل. - ما يصل إلى ثلاثة تقارير قوية عن الإقفال وخالية من الانتظار ، بما في ذلك مثال طائرات الاستطلاع بدون طيار والدفاع الجوي ، في محاولة لإسقاط هذه الطائرات بدون طيار. وهذه التقارير كانت محبوبة من قِبل HighLoad ++ بحيث تم استدعاؤها إلى HighLoad ++ في موسكو في 07-08 نوفمبر .
- سلسلة من التقارير حول PLINQ و Async-Await. كل شيء مفصل أيضًا قدر الإمكان. ليس على مدار الساعة: هذه الأشياء كافية على الإنترنت. سيتم إخبار كل تقنية "من الداخل": كما هو معتاد في CLRium.
- وسيتم إغلاق الندوة بتقريرين عن مكتبة المجموعات غير المقفلة من Microsoft و Intrinsics (تعليمات المتجه للموازنة على مستوى المعالج).
بعض الإحصاءات
نحن أكبر ندوة في البلاد ، وبشكل عام نحن لسنا مؤتمرًا لمجرد أننا نحب تنسيقنا. لا تختار بين التقارير التي لن تذهب إليها. تذهب لكل شيء. في الوقت نفسه ، أنت تفهم مقدمًا أن جميع موضوعات الندوة تهمك ، لأن الموضوع واحد. سيتم تسجيل رقم قياسي آخر في CLRium 6: 700 سيحضره الناس في كلتا المدينتين. يضخ حوالي 700 شخص مهاراتهم في التوازي ويعملون مع المنافسة. وسوف يذهبون للمقابلات. تعال وانت لنا :).