using System.Collections.Concurrent; using System.Collections.Generic; using System.Linq; namespace Masuit.Tools.Systems { /// /// 定长队列 /// /// public class ConcurrentLimitedQueue : ConcurrentQueue { /// /// 长度 /// public int Limit { get; set; } /// /// 定长队列 /// /// public ConcurrentLimitedQueue(int limit) { Limit = limit; } /// /// 定长队列 /// /// public ConcurrentLimitedQueue(IEnumerable list) : base(list) { Limit = list.Count(); } /// /// 入队 /// /// public new void Enqueue(T item) { if (Count >= Limit) { TryDequeue(out var _); } base.Enqueue(item); } } }