阅读量: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来实现对队列的互斥访问和条件变量控制。