namespace DispenserCommon.Utils; /// /// 缓冲队列 /// public class BufferQueue(int capacity) { private readonly Queue _queue = new(); private readonly int _capacity = Math.Min(capacity, 10); private readonly object _lock = new(); // 尝试添加元素到队列中 public bool TryEnqueue(T? item) { lock (_lock) { if (_queue.Count >= _capacity) return false; _queue.Enqueue(item); return true; } } // 尝试从队列中移除并返回元素 public bool TryDequeue(out T? result) { lock (_lock) { if (_queue.Count > 0) { result = _queue.Dequeue(); return true; } result = default(T); return false; } } // 获取当前队列中的元素数量 public int Count { get { lock (_lock) { return _queue.Count; } } } }