Clojure-agents

提供:Dev Guides
移動先:案内検索

Clojure-エージェント

何度も指摘されているように、Clojureは多くのデータ型が不変であるプログラミング言語です。つまり、変数の値を変更できる唯一の方法は、新しい変数を作成して新しい値を割り当てることです。 ただし、Clojureには、可変状態を作成できる要素がいくつかあります。 これは、原子データ型を使用して実現できることがわかりました。 これを実現するもう1つの方法は、エージェントを使用することです。

  • エージェント*は、個々の場所の独立した非同期の変更を提供します。 エージェントは、その存続期間中、単一の保管場所にバインドされ、アクションの結果としてその場所の変更(新しい状態への変更)のみを許可します。 アクションは、エージェントの状態に非同期的に適用され、戻り値がエージェントの新しい状態になる関数(オプションで、追加の引数を含む)です。

Clojureでは、エージェントに関して次の操作が可能です。

Sr.No. Operations & Description
1

agent

エージェントは、agentコマンドを使用して作成されます。

2

send

この関数は、値を介してエージェントに送信するために使用されます。

3

shutdown-agents

この関数は、実行中のエージェントをシャットダウンするために使用されます。

4

send-off

エージェントが本来ブロックしている機能を割り当てられている場合があります。

5

await-for

エージェントの値が更新されると遅延が発生するため、Clojureはエージェントの更新を待機する時間をミリ秒単位で指定するために使用される「待機」機能を提供しました。

6

await

このスレッドまたはエージェントからエージェントにこれまでにディスパッチされたすべてのアクションが発生するまで、現在のスレッドをブロックします(無期限に!)。 失敗したエージェントをブロックします。

7

agent-error

エージェントが失敗した場合、エージェントの非同期アクション中にスローされた例外を返します。 エージェントが失敗しない場合、nilを返します。