优先列队.Net PriorityQueue 使用

1.目的实现一个有优先级列队处理的线程
2.代码

消费:

 public class PriorityQueueTaskService
    {


        public static PriorityQueue<QueueDto, int> queueList = new();

        public static async Task PriorityQueueTask()
        {

            try
            {
                _ = Task.Factory.StartNew(async () =>
                {

                    while (true)
                    {
                        try
                        {
                            while (queueList.TryDequeue(out QueueDto? item, out int priority))
                            {
                                if (item == null) continue;

                                Console.WriteLine($"Popped Item : {item.Name}. Priority Was : {priority}");
                            }

                        }
                        catch(Exception ex)
                        {

                        }

                       


                        await Task.Delay(100);
                    }

                   

                });

   

            }
            catch (Exception ex)
            {

            }




        }


    }

生产:

 PriorityQueueTaskService.queueList.Enqueue(queueDto, priority);

3.这种思路可能解决问题是
一些大量请求过来的数据队列未能及时消费,但是有些相对更为紧急需要处理的队列则可以插队处理。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

智慧方

开发程序不易

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值