Clojure-await

提供:Dev Guides
2020年6月22日 (月) 22:42時点におけるMaintenance script (トーク | 投稿記録)による版 (Imported from text file)
(差分) ← 古い版 | 最新版 (差分) | 新しい版 → (差分)
移動先:案内検索

Clojure-お待ちください

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

構文

構文は次のとおりです。

(await agentname)

パラメータ-「エージェント名」は、待機機能を設定するエージェントです。

戻り値-なし。

これがどのように使用されるかの例は、次のプログラムに示されています。

(ns clojure.examples.example
   (:gen-class))
(defn Example []
   (def counter (agent 0))
   (println @counter)

   (send-off counter + 100)
   (await counter)
   (println @counter)

   (shutdown-agents))
(Example)

出力

上記のプログラムは、次の出力を生成します。

0
100

上記のプログラムから、await関数はClojureが最初に関数の値を更新するのを待ってから呼び出しプログラムに制御を戻すため、エージェントの値が画面に即座に出力されることがわかります。