1 public class QueueTest 2 { 3 public static Queue<string> q = new Queue<string>(); 4 5 #region 获取队列数量 6 public int GetCount() 7 { 8 9 return q.Count; 10 } 11 #endregion12 13 #region 队列添加数据14 public void IntoData(string qStr) 15 { 16 string threadId = System.Threading.Thread.CurrentThread.ManagedThreadId.ToString(); 17 q.Enqueue(qStr); 18 Console.WriteLine($"队列添加数据: {qStr};当前线程id:{threadId}"); 19 } 20 #endregion21 22 #region 队列输出数据23 24 public string OutData() 25 { 26 string threadId = System.Threading.Thread.CurrentThread.ManagedThreadId.ToString(); 27 string str = q.Dequeue(); 28 Console.WriteLine($"队列输出数据: {str};当前线程id:{threadId}"); 29 return str; 30 } 31 #endregion32 33 }
为了模拟并发情况下也不会出现重复读取和插入混乱的问题所以写了TaskTest类里面开辟了两个异步线程进行插入和读取:
1 class TaskTest 2 { 3 4 #region 队列的操作模拟

