を参照してください。簡単にするために、先物は勝てません。彼らは新しいスレッドを作成し、そこから値を返します。しかし、しばしば、より細かい制御が必要です。
core.asyncライブラリは、パイプライン経由で並列処理をサポートしています(下記参照)。また、自動バックプレッシャも備えています。あなたは誰も仕事を飢えさせたり、あまりにも負担をかけたりしないように、データの流れを制御する方法が必要です。 core.asyncチャンネルは境界を接する必要があり、これはこの問題に役立ちます。また、それはあなたの問題のかなり論理的なモデルです。ソースから値をとり、transducer?を使用して変換したもの(parallelism)を与えて、その結果をデータベースに入れます。
また、Javaの優れたj.u.concurrent
ライブラリを使用した手動ルートに進むこともできます。低レベルのプリミティブとthread poolsのthread managementツールがあります。これらのすべては、クロージャー内でアクセス可能です。
デザインの観点から見ると、より多くのCPUバウンドまたはI/Oバウンドになっています。これは、redisからのパラレル読取りとデータベースへの書込みを実行するかどうかなどの決定に影響します。 CPUにバインドされているためにボトルネックが計算されていると、読み込みを並列化したり、データベースに書き込んだりすることはあまり意味がありません。これらは考慮すべき種類のものです。
(1)clojureの/ javaの並行性メカニズムに精通していること、(2)この問題に対するあなたのアプローチ(つまり、どのようにこの問題に近づくでしょうか? ?を使用して)。 #2を解くと、私が上で述べたどのツールを使うべきか、それらを使う方法についてのより良い考えが得られます。