C#下队列的使用
案例:借鉴https://www.cnblogs.com/yaopengfei/p/8322016.html
单例模式
/// <summary> /// 单例类 /// </summary> public class QueueUtils { /// <summary> /// 静态变量:由CLR保证,在程序第一次使用该类之前被调用,而且只调用一次 /// </summary> private static readonly QueueUtils _QueueUtils = new QueueUtils(); /// <summary> /// 声明为private类型的构造函数,禁止外部实例化 /// </summary> private QueueUtils() { } /// <summary> /// 声明属性,供外部调用,此处也可以声明成方法 /// </summary> public static QueueUtils instanse { get { return _QueueUtils; } } //下面是队列相关的 Queue queue = new Queue(); private static object o = new object(); public int getCount() { return queue.Count; } /// <summary> /// 入队方法 /// </summary> /// <param name="myObject"></param> public void Enqueue(object myObject) { lock (o) { queue.Enqueue(myObject); } } /// <summary> /// 出队操作 /// </summary> /// <returns></returns> public object Dequeue() { lock (o) { if (queue.Count > 0) { return queue.Dequeue(); } } return null; } }
出入队操作
int count = 1; List<Task> taskList = new List<Task>(); for (int i = 0; i < 100; i++) { var task = Task.Run(() => { QueueUtils.instanse.Enqueue(count++); }); taskList.Add(task); } Task.WaitAll(taskList.ToArray()); //发现队列个数在全是100 Console.WriteLine("单例模式下队列个数" + QueueUtils.instanse.getCount()); //下面是出队相关的业务 while (QueueUtils.instanse.getCount() > 0) { Console.WriteLine("出队:" + QueueUtils.instanse.Dequeue()); }
|
作者:chenze 出处:https://www.cnblogs.com/chenze-Index/ 本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。 如果文中有什么错误,欢迎指出。以免更多的人被误导。 |

浙公网安备 33010602011771号