最近、GPars(Groovy Parallel System) ライブラリを調査していて、DataFlow 変数に出会いました。ドキュメントには、Dataflow 変数は 1 回しか割り当てることができないと書かれています。ただし、この制限の理由を見つけることができませんでした。
GPars の Dataflow 変数が 1 回だけ割り当てられる理由を誰か教えてもらえますか?
最近、GPars(Groovy Parallel System) ライブラリを調査していて、DataFlow 変数に出会いました。ドキュメントには、Dataflow 変数は 1 回しか割り当てることができないと書かれています。ただし、この制限の理由を見つけることができませんでした。
GPars の Dataflow 変数が 1 回だけ割り当てられる理由を誰か教えてもらえますか?
データフロー プログラミングでは、変数は一度だけ書き込み可能であり、変数の値を使用 (消費) するコードを同期する方法です。実行をガイドするのは、このデータの流れです。
プログラミング全般、特にデータフローの同時実行に関する優れた本はConcepts, Techniques, and Models of Computer Programmingで、データフロー同期変数の使用方法 (Oz 言語を使用) について詳しく学ぶことができます。
一方、変数に複数の値を割り当てることができる場合は、値が書き込まれるたびに、そのコンシューマーに通知する必要があります。これは、メッセージ パッシングのように聞こえます。
DataflowVariable はその値を変更できないため、競合状態を持つことはできません。ノンブロッキング書き込みを行うこともできるため、設計上、非常に効率的でデッドロックが発生しません。最初の割り当ての後、ノンブロッキング読み取りを行うことさえできます。