中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

如何通過Queue類實現C#中的生產者消費者模式

c#
小樊
92
2024-08-18 06:40:37
欄目: 編程語言

在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來實現對隊列的互斥訪問和條件變量控制。

0
重庆市| 叙永县| 五河县| 宕昌县| 磴口县| 台前县| 长春市| 甘谷县| 丽水市| 鸡东县| 朝阳县| 客服| 阳西县| 柳河县| 蓬溪县| 福海县| 茂名市| 纳雍县| 肃南| 随州市| 前郭尔| 万荣县| 苏尼特左旗| 七台河市| 微山县| 六枝特区| 邵阳市| 龙山县| 新昌县| 饶阳县| 井陉县| 洛扎县| 林州市| 额尔古纳市| 哈巴河县| 屯门区| 南澳县| 望都县| 墨竹工卡县| 罗山县| 乃东县|