首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

在.NET中创建阻塞队列<T>?

在.NET中,创建阻塞队列<T>可以使用System.Collections.Concurrent命名空间中的BlockingCollection<T>类。BlockingCollection<T>是一个线程安全的集合类,可以实现阻塞队列的功能,即当队列为空时,取数据的操作将会被阻塞,直到有新的数据被添加到队列中;当队列已满时,添加数据的操作也将被阻塞,直到有数据被移除出队列。

以下是一个简单的示例代码:

代码语言:csharp
复制
using System;
using System.Collections.Concurrent;
using System.Threading;
using System.Threading.Tasks;

class Program
{
    static void Main(string[] args)
    {
        // 创建一个阻塞队列
        BlockingCollection<int> queue = new BlockingCollection<int>();

        // 创建一个生产者任务,向队列中添加数据
        Task producer = Task.Run(() =>
        {
            for (int i = 0; i < 10; i++)
            {
                queue.Add(i);
                Console.WriteLine($"Producer added {i} to the queue.");
            }
            queue.CompleteAdding();
        });

        // 创建一个消费者任务,从队列中取出数据
        Task consumer = Task.Run(() =>
        {
            foreach (int item in queue.GetConsumingEnumerable())
            {
                Console.WriteLine($"Consumer retrieved {item} from the queue.");
                Thread.Sleep(1000); // 模拟处理数据的时间
            }
        });

        // 等待生产者和消费者任务完成
        Task.WaitAll(producer, consumer);
    }
}

在上面的示例代码中,我们创建了一个阻塞队列queue,并且分别创建了一个生产者任务和一个消费者任务。生产者任务向队列中添加数据,消费者任务从队列中取出数据并进行处理。通过GetConsumingEnumerable()方法可以获取一个可枚举的数据结构,当队列为空时,枚举将会被阻塞,直到有新的数据被添加到队列中。

总之,在.NET中创建阻塞队列<T>可以使用BlockingCollection<T>类,它提供了线程安全的队列操作,并且可以方便地实现阻塞队列的功能。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

5分3秒

22.在Eclipse中创建Maven版的Web工程.avi

6分22秒

17-在idea中能够创建mybatis核心配置文件和映射文件的模板

6分49秒

008_尚硅谷_Scala_在IDE中编写HelloWorld(一)_项目创建和环境配置

7分53秒

day22/上午/425-尚硅谷-尚融宝-创建通用dto以及在微服务中引入和配置RabbitMQ

5分25秒

046.go的接口赋值+嵌套+值方法和指针方法

3分17秒

【PVE系列】零基础PVE中系统镜像上传以及虚拟机的创建(无坑版)

13分41秒

05-尚硅谷-在Eclipse中使用Maven-创建Java工程

9分27秒

06-尚硅谷-在Eclipse中使用Maven-创建Web工程

7分39秒

07-尚硅谷-在Eclipse中使用Maven-创建父工程

8分23秒

10-尚硅谷-在Idea中使用Maven-创建Java工程

6分17秒

11-尚硅谷-在Idea中使用Maven-创建Web工程

18分35秒

14-尚硅谷-在Eclipse中使用Git-创建本地库

领券