0

Clojure のドキュメントでは、エージェントがスレッドのプールを使用してデータを処理していることがわかります。しかし、私はそれを読みました(常にドキュメントにあります):

すべてのエージェントのアクションは、スレッド プール内のスレッド間でインターリーブされます。どの時点でも、エージェントごとに最大 1 つのアクションが実行されます。

エージェントには、送信された関数の「キュー」を処理する単一のスレッドではなく、スレッドのプールがあるのはなぜですか?

ありがとう。

4

1 に答える 1

2

エージェントには「スレッドのプール」はありません。エージェント アクションが割り当てられる2 つのスレッド プール (sendとアクション) があります。send-off

この設計上の決定は、CPU バウンド タスクの最適な選択であり、IO バウンド タスクのベスト エフォート アプローチです。

後者の場合、独自のプールを提供するsend-viaことが最適な選択です (自分が何をしているのかを知っていると仮定して)。

于 2013-08-07T11:57:02.043 に答える