ランタイム中にコンシューマーが変更される可能性があるプロデューサー/コンシューマーの状況に合わせて、ラウンド ロビン ベースのスケジューリングを実装したいと考えています。
最初は、Queue
すべてのコンシューマーを含む を使用し、1 つをキューから取り出し、すぐに再度キューに入れ、循環コレクションを作成しましたが、完全に機能しました。新しいコンシューマーが登録されるたびに、それをキューに入れました->完了。
ただし、実行時 (サブスクライブ解除メッセージを送信するとき) にコンシューマーを削除するという問題は困難です。Queue は Remove() メソッドを提供しませんが、キュー内のコンシューマーの現在の位置とは関係なく、それらをキューから完全に削除する必要があります。明らかに、Queue
「インターフェース」はまさに私が必要としているものではありません。
私が聞いたことのない C# には、ある種の「循環コレクション」がありますか?