楽しみのために、C#で一般的なプロデューサー/コンシューマーペア+処理キューを実装するというアイデアをいじっています。アイデアは、適切なIProducerおよびIConsumerインターフェイス(デフォルトの実装が提供されます)を実装するオブジェクトを作成し、それらを主にデリゲートで構成し、それらをQueueProcessor
クラスインスタンスに渡し、必要なコンシューマーの数を指定して、移動できるようにすることです。
しかし、私は自分自身に、「自分自身、確かにこれは以前に行われたことがある」と言います。
では、C#でのプロデューサー/コンシューマーパターンの優れた一般的な実装を知っている人はいますか(VB.Netも問題ありません)。私が探している基本的な要件:
- 生成されたタイプと消費されたタイプ(入力、キューに入れられたタスク、出力タイプ、またはそれらの任意の組み合わせ)にジェネリックを使用します
- キューで作業するコンシューマーの数を指定できます
- 複数のキューをパイプラインにリンクまたはチェーンできるようにします(複数のコンシューマーでトリッキーです、私は知っています)
- 独自のプロデューサーとコンシューマーを実装できるようにします
- IEnumerableをプロデューサーに変えることができます(可能な限り、自分で実装する必要がある場合は問題ありません)
- デリゲートベース(基本的なコンシューマーまたはプロデューサーの作業にラムダ構文を使用して単一のアイテムを処理できます)
または、何もない場合、どのような落とし穴がそれを妨げましたか、そしてそれをどのように実装するかについて何か考えがありますか?