6

これは、Clojure の並行性をよりよく理解したいという私の願望によって動機付けられた理論的な質問です。

私がボイドを書いているとしましょう。各ボイドは、ワールド グリッドを表すベクトルまたは参照内の位置を変更する個別の緑色のスレッドであると仮定します。ヒッキーのアリのコロニーを考えてみてください。

現在、Clojure.org のドキュメントには、「Ref のすべての読み取りでは、トランザクションの開始点 (その「読み取りポイント」) の時点での「Ref world」の一貫したスナップショットが表示される」と記載されています。

これは、トランザクション内で (つまり、dosync コンテキスト内で) ref のベクトルを読み取ることによって、シミュレーションの一貫したスナップショットを取得することしかできないということですか?

ありがとう!

4

1 に答える 1

7

一貫したスナップショットが必要な場合は、トランザクションが必要です。

トランザクションの外部で参照を読み取ると、それぞれを読み取った瞬間の値が得られます。別のトランザクションが読み取りの間に 1 つ以上の参照を変更しないという保証はないため、一貫性のないビューになる可能性があります。

于 2012-08-16T11:11:51.103 に答える