0

私は、私の 1 つのコンポーネントから別のコンポーネントにデータを渡すために c# の並行キューを利用する私のプログラムを持っています。

コンポーネント 1: 複数のネットワーク接続がデータを受信し、それをこのキューに入れる

コンポーネント 2: このキューからデータを読み取り、処理します。

わかりました、すべてが理にかなっています(私は確かに願っています)。

今私が知りたいのは、2つのコンポーネント間でデータを渡すための最良/最も効率的な方法は何ですか?

オプション 1: コンポーネント 2 の新しいデータについてキューをポーリングしますか? ブロッキングコードが必要になるか、少なくともwhile(true)

オプション 2: これが可能かどうかはわかりませんが、それが私がここで質問している理由です。キューのデータ構造には、コンポーネント 2 をキューに登録して挿入/変更の通知を受けることができるという一種の機能がありませんか? このようにして、データが追加されるたびにフェッチすることができ、ブロック/ポーリングコードを回避できます。

4

2 に答える 2

2

Producer/Consumer を簡単に実装するには、BlockingCollectionを使用してみてください。さまざまなソースからのデータをより複雑に消費するには、Reactive Extensionsが役立つ場合があります。学習曲線ははるかに急勾配ですが、非常に強力なプル ベースのフレームワークであるため、ポーリングを行う必要はありません。

于 2014-05-12T10:19:52.870 に答える