AnimationのCore.asyncと10,000プロセス - このシナリオでは、実際の利点は何ですか?

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

質問

私たちが知っているように - core.async csp > go-lang 。今 とalt ここでcore.async が働く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プロセスアニメーションシナリオ 'の実際の利点は何ですか?

役に立ちましたか?

解決

デモの目的は、Core.asyncとClojurecriptの並行性を実現することを実証することです。大きな勝利は、それらをコールバックに分割するか、手でインターリーブを管理する必要なしに、またはチャネル上のブロッキングの錯覚(タイムアウトチャネルを含む。ブロッキングによって、goによって制御することで、照明を照らすことで)他の同時gosへ。もちろん並列性はまだありませんが、これは完全直交概念 1 です。 GUIアプリのスレッドを使用することは、マルチコアCPUが一般的になった前に長い間便利なテクニックです。

結果のコードは、更新率と更新生成率のようなものをすぐに明らかにします。更新生成forsはすべて同じことを行うが、完全に異なることを実行するために複数のsetTimeoutを起動するので、一般的なものが等しく表現されるため、おそらくCliriに閉じることができます。


1 並列処理/=並行性 Simon Marloweまたは並列処理は、並行性ではなく、Robert Harperが拡張するこの点。

他のヒント

JavaScriptがシングルスレッドで、 "実際の実行/操作"という点でcore.asyncを使用する場合は、多くの利点がありませんが、ループベースのコードがCore.Asyncコードと比較された場合すべてのCPUコアを利用するランタイム環境(JVMのような)では、非同期コードのパフォーマンス上の利点があります。

それで、基本的に、Core.asyncを使用して書いたことを書いた純粋なalgorithmic code(DOMなどの実際の環境機能のない)を持っている場合は、ブラウザまたはバックエンドのマルチコアCPUで簡単に同じコードを簡単に実行できます。そして、すべてのCPUコアを使用します。これは、コードの「Dyonooth Semantics」と「運用上のセマンティクス」を分離する範囲でいくらかです。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top