سؤال

أنا أفكر هنا: إذا كان لديك مؤشرات الترابط 2 تنفيذ عمليات سريعة تحتاج إلى مزامنة، فلا نهج غير مناسب بشكل أسرع / أفضل من نهج تبديل الحظر / السياق؟

عن طريق عدم الحجب أعني شيئا مثل:

بينما (صحيح) { إذا (CheckAdtThelock ()) استراحة؛ }

الشيء الوحيد الذي يمكنني التفكير فيه هو الجوع (مع حرق وحدة المعالجة المركزية) إذا كان لديك الكثير من المواضيع حلقات حول القفل.

كيف يمكنني تحقيق التوازن بين نهج واحد مقابل الآخر؟

هل كانت مفيدة؟

المحلول

إليك ما يقوله Java في الممارسة عن الموضوع:

يمكن ل JVM تنفيذ حظر إما عن طريق انتظار الدوران (مرارا وتكرارا محاولة الحصول على القفل حتى ينجح) أو bysuspending خيط محظور من خلال نظام التشغيل. وهو أكثر كفاءة يعتمد على العلاقة بين تبديل السياق النفقات العامة و الوقت حتى يصبح القفل متاحا؛ الدوران هو الأفضل ينتظر الاختصاصات والتعليق هو الأفضل للنقاض الطويلة. بعض JVMS اختر بين الاثنين بناء على بيانات التنميطية من الانتظار مرات، ولكن فقط تعليق الخيوط في انتظار قفل.

وأيضا (وهو المنظمة البحرية الدولية، النقطة الأكثر أهمية):

لا تقلق بشكل مفرط حول تكلفة المزامنة غير الخاطئة. الآلية الأساسية هي بالفعل سريعة جدا، ويمكن ل JVMS القيام بها تحسينات إضافية تؤدي إلى تقليل التكلفة أو القضاء عليها. بدلا من ذلك، يركز جهود التحسين على المناطق التي يكون فيها خلاف القفل يحدث فعلا.

نصائح أخرى

حسنا، الطريقة الوحيدة للتأكد من اختبارها.عندما يتعلق الأمر بمتعدد المدة والأداء، لا يمكنك تحمله ببساطة.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top