は、私は、以下の発表を読んでいた。マップ関数が本質的に並行しているのはなぜですか?
http://www.idt.mdh.se/kurser/DVA201/slides/parallel-4up.pdf
と著者はマップ機能は、並列処理のために非常によく構築されていると主張する(特に彼は、3ページまたはスライド9と10の彼の主張をサポートしています)。
リストの各値を+1ずつ増やすという問題があった場合、リストをルーピングすることによってインデックス値が変更され、競合状態の問題が発生する可能性があります。しかし、私は、マップ関数がプログラマがうまく並行してコード化できるようにする方法が不思議です。
マップが再帰的に定義されているためですか?したがって、各関数呼び出しを別のスレッドにスローすることはできますか?
私は誰かがいくつかの詳細を提供できることを願って、ありがとう!
が入力リストの要素は、他のアプリケーションから他の要素への*独立*なので、すべて互いに独立して、つまり並列に実行できます。仮引数 'par_map'は、結果のリストを返すために記憶域を割り当て、リスト内の各要素' e'に対して新しいスレッドの実行を促し、更新される必要のある場所への参照を ' 。アクティブなスレッドがなくなると 'map'が終了します。もちろん、各スレッドが1000の 'e'sのブロックで動作するようにすることもできます。 –