117.info
人生若只如初见

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

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

未经允许不得转载 » 本文链接:https://www.117.info/ask/fee15AzsABQVRDA.html

推荐文章

  • c++ front的应用场景是什么

    C++ front通常用于开发图形用户界面(GUI)应用程序,如桌面应用程序、移动应用程序和嵌入式应用程序。它还可以用于开发游戏、计算机图形学应用程序和科学计算应用...

  • c++ front的注意事项有哪些

    在使用C++进行前端开发时,需要注意以下几点: 内存管理:C++是一种静态语言,需要手动管理内存。确保在使用new关键字分配内存后,及时使用delete释放内存,避免...

  • c++ front的优势是什么

    C++ Front的优势主要包括以下几点: 性能高:C++是一种高性能的编程语言,它可以直接调用底层硬件的功能,实现高效的程序执行。因此,C++ Front在处理大规模数据...

  • c++ front的特性有哪些

    C++语言具有许多具有吸引力的特性,使其成为一种流行的编程语言。以下是一些C++的特性: 面向对象编程(OOP):C++是一种支持面向对象编程的语言,可以通过类和对...

  • Queue类在C#中的资源管理和释放方法有哪些

    在C#中,Queue类是一种集合类,用于存储对象并按照先进先出(FIFO)的顺序进行访问。在使用Queue类时,需要注意资源的管理和释放,可以采取以下方法: 使用using...

  • C++中Softmax函数的数值稳定性

    在C++中,Softmax函数的数值稳定性通常可以通过以下几种方法来改善: 使用数值稳定性更好的计算方式:Softmax函数的计算公式为exp(x_i) / sum(exp(x_j)), 在计算...

  • C++ Softmax算法的优化方法

    有几种方法可以优化C++中的Softmax算法,以提高其性能: 使用并行化技术:可以使用C++中的并行化库如OpenMP或Intel TBB来并行化Softmax算法的计算过程,以利用多...

  • 如何在C++中实现Softmax函数

    在C++中实现Softmax函数可以通过以下代码:
    #include #include #include std::vector softmax(std::vector &input) { std::vector result; double sum = 0....