الأساسية.المتزامن و 10000 عمليات الرسوم المتحركة - ما هي الفائدة الفعلية في هذا السيناريو ؟

StackOverflow https://stackoverflow.com//questions/21033068

سؤال

كما نعلم - الأساسية.المتزامن يستخدم 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 ينتج التحكم الأخرى المتزامنة gos).بالطبع لا يوجد التوازي, ولكن هذا هو تماما متعامد مفهوم1;استخدام المواضيع في واجهة المستخدم الرسومية تطبيقات تقنية مفيدة قبل فترة طويلة من وحدات المعالجة المركزية متعددة النوى أصبح شائعا.

مما أدى كود يجعل الأمور مثل معدل تحديث معدل تحديث الجيل واضحة على الفور.ربما تقترب في الوضوح مع for الحلقات setTimeout في هذه الحالة بالذات ، لأن كل تحديث-توليد gos تفعل نفس الشيء ولكن إطلاق متعددة gos أن تفعل أشياء مختلفة تماما سوف تكون أيضا بسيطة.


1 انظر على سبيل المثال التوازي /= التزامن بواسطة سيمون مارلو أو التوازي هو عدم التزامن روبرت هاربر من أجل مناقشة مطولة حول هذه النقطة.

نصائح أخرى

كما تعلمون أن جافا سكريبت هي واحدة مترابطة و إذا كنت تستخدم الأساسية.المتزامن من حيث "التنفيذ الفعلي/عمليات" لن تحصل على الكثير من المنافع ، ولكن عندما الحلقة رمز القائمة هو مقارنة الأساسية.المتزامن البرمجية في بيئة وقت التشغيل التي تستخدم كل النوى وحدة المعالجة المركزية (مثل JVM) ثم سترى الأداء لصالح المتزامن رمز.

لذا أساسا إذا كان لديك بعض النقي algorithmic code (دون depedency على بيئة وقت التشغيل ميزات مثل دوم الخ) التي كنت قد كتبت باستخدام الأساسية.المتزامن ثم يمكنك بسهولة تشغيل نفس الكود في المتصفح أو على الخلفية متعددة النواة وحدة المعالجة المركزية و سوف تحصل على استخدام جميع وحدات المعالجة المركزية.هذا هو إلى حد ما على خطوط فصل "denoational دلالات" و "التنفيذية دلالات" من التعليمات البرمجية الخاصة بك.

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