回调函数 事件处理 dotnet .net 有界队列 背压机制(Backpressure)有界队列
通过有界队列来实现背压,确保生产者不会以超过消费者处理能力的速度发送数据。
using System.Threading.Channels; public class Program { static async Task Main(string[] args) { // 创建一个有界的消息队列,设置最大容量为5 BoundedChannelOptions options = new BoundedChannelOptions(5) { FullMode = BoundedChannelFullMode.Wait, // 当队列满时,生产者等待 SingleReader = true, // 该通道只有一个消费者 SingleWriter = true // 该通道只有一个生产者 }; Channel<string> channel = Channel.CreateBounded<string>(options); // 启动消费者任务 Task consumerTask = ConsumeMessagesAsync(channel.Reader); // 模拟生产者,尝试发送一些消息到队列 while (true) { string? v = System.Console.ReadLine(); if (!string.IsNullOrEmpty(v)) { if (v == "q") { channel.Writer.Complete(); await consumerTask; break; } await WriteMessageAsync(channel.Writer, v); // Console.WriteLine($"Produced: {v}"); } } } static async Task ConsumeMessagesAsync(ChannelReader<string> reader) { while (await reader.WaitToReadAsync()) { while (reader.TryRead(out string item)) { Console.WriteLine($"Consumed: {item}"); await Task.Delay(100); // 模拟处理时间 } } } static async Task WriteMessageAsync(ChannelWriter<string> writer, string message) { await writer.WriteAsync(message); // 生产者会在这里等待,直到有空间可用 } }
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 清华大学推出第四讲使用 DeepSeek + DeepResearch 让科研像聊天一样简单!
· 推荐几款开源且免费的 .NET MAUI 组件库
· 实操Deepseek接入个人知识库
· 易语言 —— 开山篇
· Trae初体验
2024-01-23 dotnet注册服务 secs4net secs
2024-01-23 dotnet 扩展Service方法 secs4net
2024-01-23 csharp 扩展方法
2022-01-23 tampermonkey 油猴脚本 博客园美化