プロデューサー/コンシューマーのバインドされたキュー、単一のプロデューサーに対する複数のコンシューマーを実装する必要があります。
アイテムをキューに追加してから最大サイズをチェックするプッシュ機能があります。到達した場合は false を返し、それ以外の場合は true を返します。
次のコードでは、_vector は List<T> であり、onSignal は基本的にアイテムを非同期で消費します。
このコードに問題はありますか?
public bool Push(T message)
{
bool canEnqueue = true;
lock (_vector)
{
_vector.Add(message);
if (_vector.Count >= _maxSize)
{
canEnqueue = false;
}
}
var onSignal = SignalEvent;
if (onSignal != null)
{
onSignal();
}
return canEnqueue;
}