Clojure Dataflow プログラミング API を使用する理由と方法を誰かが説明できますか?インターネット上でそれについて多くを見つけることができないようです。
1 に答える
データフロー プログラミングとは何かについての他の情報を読むことが最も役立つと思います。私見、Groovy GParsの連中はdataflowに関する最高のドキュメントをいくつか持っています。GParsメーリング リストでは、過去にデータフロー、CSP、アクターなどについて多くの議論が行われており、質問をするのに最適な場所です。
その他の便利なリンク:
- Groovy でのデータ フローの同時実行- Vaclav Pech (GPars)
- データの流れ- Vaclav Pech (GPars)
- データフローの選択- Vaclav Pech (GPars)
- GPars 記事の例 - Alex Miller
- プレゼンテーション- Jonas Boner (Akka / Scala)
- ウィキペディアはもちろん
Clojure のimplは、基本的には ref の上にデータフロー変数を構築し、それらの ref で関数を監視する、かなり必要最小限のものです。ドキュメントよりも 実際のコードやテストの方が役立つ場合があります。
データフロー変数で引用される標準的な例は、スプレッドシートの例です。ここで、各変数は、他のセルの値によって定義されるスプレッドシート内のセルです。1 つのセルが変更されると、変更は依存関係の順序で波及します。ただし、データフロー変数自体は多少制限されています。データフロー ストリームは、アイデアがより興味深いものになると思います。
ある意味では、(通常はより小さな) 固定スレッドのセットでスケジュールされた軽量処理ノードのアイデアは、それぞれがキューのようなストリームで接続されており、{データフロー ストリーム、アクター、CSP} のすべてを非常に高いレベルで説明しています。目標は、すべてのケースで、作業を行うノードを動作させ、作業を行わないノードでサイクルを無駄にしないことによって高いスループットを維持すること、およびユーザーが明示的なスレッドとロックを管理することを回避することです (それらの間のキュー/ストリーム/チャネルを介して分離されます) )。