الأساسية.المتزامن و 10000 عمليات الرسوم المتحركة - ما هي الفائدة الفعلية في هذا السيناريو ؟
-
21-12-2019 - |
سؤال
كما نعلم - الأساسية.المتزامن يستخدم CSP و هو مماثل goroutines من الذهاب لانج.الآن لسيناريو مثل حدد و alt وهذا ما يجعل الكثير من معانيها.
ديفيد Nolen وقد فعلت مذهلة التجريبي هنا تظهر الأساسية.المتزامن في Clojure في العمل في الرسوم المتحركة في ClojureScript.
حتى الآن أنا يمكن تكرار وظائف مماثلة مع بسيطة عن الحلقة.يمكنك ان ترى التجريبي هنا.
function animationLoop() {
for (var i =0;i<100;i++) {
for (var j= 0; j<100;j++) {
//decision to animate or hold off
var decisionRange = randomInt(0,10);
if (decisionRange < 1) {
var cell = document.getElementById('cell-' + i + j);
cell.innerHTML = randomInt(0,9);
cell.setAttribute('class','group' + randomInt(0,5));
}
}
}
}
سؤالي هو ما هي الفائدة الفعلية الأساسية.المتزامن في '10,000 العمليات المتحركة السيناريو'?
المحلول
الغرض من العرض هو إظهار تحقيق التزامن في ClojureScript الأساسية.المتزامن.انتصارات كبيرة في كتابة جميع المواضيع في معيار متتابعة الأزياء ، دون الحاجة إلى كسر بينهما في رد أو إدارة التداخل من جهة ، و في الوهم حظر على فضائية (بما في ذلك مهلة قنوات ؛ من خلال منع ، go
ينتج التحكم الأخرى المتزامنة go
s).بالطبع لا يوجد التوازي, ولكن هذا هو تماما متعامد مفهوم1;استخدام المواضيع في واجهة المستخدم الرسومية تطبيقات تقنية مفيدة قبل فترة طويلة من وحدات المعالجة المركزية متعددة النوى أصبح شائعا.
مما أدى كود يجعل الأمور مثل معدل تحديث معدل تحديث الجيل واضحة على الفور.ربما تقترب في الوضوح مع for
الحلقات setTimeout
في هذه الحالة بالذات ، لأن كل تحديث-توليد go
s تفعل نفس الشيء ولكن إطلاق متعددة go
s أن تفعل أشياء مختلفة تماما سوف تكون أيضا بسيطة.
1 انظر على سبيل المثال التوازي /= التزامن بواسطة سيمون مارلو أو التوازي هو عدم التزامن روبرت هاربر من أجل مناقشة مطولة حول هذه النقطة.
نصائح أخرى
كما تعلمون أن جافا سكريبت هي واحدة مترابطة و إذا كنت تستخدم الأساسية.المتزامن من حيث "التنفيذ الفعلي/عمليات" لن تحصل على الكثير من المنافع ، ولكن عندما الحلقة رمز القائمة هو مقارنة الأساسية.المتزامن البرمجية في بيئة وقت التشغيل التي تستخدم كل النوى وحدة المعالجة المركزية (مثل JVM) ثم سترى الأداء لصالح المتزامن رمز.
لذا أساسا إذا كان لديك بعض النقي algorithmic code
(دون depedency على بيئة وقت التشغيل ميزات مثل دوم الخ) التي كنت قد كتبت باستخدام الأساسية.المتزامن ثم يمكنك بسهولة تشغيل نفس الكود في المتصفح أو على الخلفية متعددة النواة وحدة المعالجة المركزية و سوف تحصل على استخدام جميع وحدات المعالجة المركزية.هذا هو إلى حد ما على خطوط فصل "denoational دلالات" و "التنفيذية دلالات" من التعليمات البرمجية الخاصة بك.