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

   2024-10-01 6060
核心提示:在C#中,可以通过Queue类实现生产者消费者模式。以下是一个简单的示例代码:using System;using System.Collections;class Progr

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

 
举报打赏
 
更多>同类物流大全
推荐图文
推荐物流大全
点击排行

网站首页  |  关于我们  |  联系方式网站留言    |  赣ICP备2021007278号