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 static implicit operator ConcurrentLimitedQueue(List list)
{
return new ConcurrentLimitedQueue(list);
}
///
/// 入队
///
///
public new void Enqueue(T item)
{
while (Count >= Limit)
{
TryDequeue(out _);
}
base.Enqueue(item);
}
}