3

不規則な間隔でデータを収集する一般的なモジュールを作成しようとしています。新しいデータが到着するとすぐに、左端からデータが到着します。これは 1 秒間に 100 回程度になる可能性があります。

右端では、それぞれ独自の定期的な間隔で n 人のリスナーを「プラグイン」できるようにしたいと考えています。簡単にするために、1 秒に 1 回の間隔ですべてとしましょう。

すべてのリスナーは、非同期である場合もそうでない場合もあるコールバック関数を登録します。

私の問題は、コールバック関数が同期している場合、「一時的なパス」がハングする可能性があることです。これにアプローチする最良の方法は何ですか?データを渡し、コールバックがハングした場合に代価を支払うことを純粋な目的とするプロセスを生成する必要がありますか?

         +-------------+ Data Out 1
=======> |Temporal Pass| ==========>
Data In  +-------------+ \\ Data Out 2
                          ++=======>
                           \\ Data Out n
                            ++=======>
4

1 に答える 1

4

メッセージの新しいプロセスを生成します。そうでない場合、プロセスは同期呼び出しが完了するまで待機します。これはまさにプロセスモデルが解決しようとしている種類の問題であり、他の方法は見当たりません。

産卵プロセスは高価ではありませんが、完全に無料でもありません。同期呼び出し用の新しいプロセスを生成するだけで、パフォーマンスがわずかに向上する場合があります。これには、各コールバックに同期または非同期のフラグを立てる何らかの方法が必要になります。

于 2012-07-04T21:41:29.580 に答える