如何通过Queue类实现C#中的生产者消费者模式

avatar
作者
猴君
阅读量:0

在C#中,可以通过Queue类实现生产者消费者模式。以下是一个简单的示例代码:

using System; using System.Collections;  class Program {     static Queue queue = new Queue();     static int maxSize = 5;      static void Main()     {         // 创建生产者线程和消费者线程         var producer = new System.Threading.Thread(Producer);         var consumer = new System.Threading.Thread(Consumer);          producer.Start();         consumer.Start();     }      static void Producer()     {         while (true)         {             lock (queue)             {                 // 如果队列满了,生产者等待                 while (queue.Count == maxSize)                 {                     System.Threading.Monitor.Wait(queue);                 }                  // 生产一个物品                 int item = new Random().Next(100);                 queue.Enqueue(item);                 Console.WriteLine("生产者生产了物品:" + item);                  // 通知消费者可以消费了                 System.Threading.Monitor.PulseAll(queue);             }         }     }      static void Consumer()     {         while (true)         {             lock (queue)             {                 // 如果队列为空,消费者等待                 while (queue.Count == 0)                 {                     System.Threading.Monitor.Wait(queue);                 }                  // 消费一个物品                 int item = (int)queue.Dequeue();                 Console.WriteLine("消费者消费了物品:" + item);                  // 通知生产者可以生产了                 System.Threading.Monitor.PulseAll(queue);             }         }     } } 

在上面的示例中,使用Queue类来作为生产者和消费者之间的共享资源队列。生产者线程不断生产物品并加入队列中,消费者线程则不断从队列中取出物品进行消费。通过使用lock和Monitor来实现对队列的互斥访问和条件变量控制。

广告一刻

为您即时展示最新活动产品广告消息,让您随时掌握产品活动新动态!