.net core 5 多线程生产和消费(Channel)队列

news/2024/5/20 0:07:53 标签: .netcore

1.目的

多个线程产生数据需要队列消费的情况

多线程生产,多线程消费,线程安全

避免延时等待

2.代码:

 [Test]
        public async Task testChannel2()
        {

            //异步写入

            var myChannel = Channel.CreateUnbounded<int>();

            _ = Task.Factory.StartNew(async () =>
            {
                for (int i = 0; i < 10; i++)
                {
                    await myChannel.Writer.WriteAsync(i);
                    await Task.Delay(1000);
                }
            });

            _ = Task.Factory.StartNew(async () =>
            {
                for (int i = 0; i < 10; i++)
                {
                    await myChannel.Writer.WriteAsync(i);
                    await Task.Delay(5000);
                }
            });

            _ = Task.Factory.StartNew(async () =>
            {
                //消费写入数据没有则等待
                while (true)
                {
                    var item = await myChannel.Reader.ReadAsync();
                    Console.WriteLine(item);
                }
            });

            _ = Task.Factory.StartNew(async () =>
            {
                //消费写入数据没有则等待
                while (true)
                {
                    var item = await myChannel.Reader.ReadAsync();
                    Console.WriteLine(item);
                }
            });

            await Task.Delay(60000);

        }


http://www.niftyadmin.cn/n/515477.html

相关文章

【转】PHP error_reporting() 错误控制函数功能详解

定义和用法&#xff1a;error_reporting() 设置 PHP 的报错级别并返回当前级别。函数语法&#xff1a;error_reporting(report_level)如果参数 level 未指定&#xff0c;当前报错级别将被返回。下面几项是 level 可能的值&#xff1a;值 常量 描述1 E_ERROR 致命的运行错误。错…

ESP8266人体感应项目

人体感应灯项目 材料 ESP8266开发版 x13.3v Led灯 x2RE200B红外感应 x2线充电宝Usb供电5v电源供电电路源码开发工具&#xff1a;arduino代码&#xff1a;//红外感应控制led int pinled1 5;//led灯1 int pinled2 4;//led灯2 int pinLwir1 14;//红外感应1 int…

.net6发送邮件

1.工具 NETCore.MailKit包 VS2022 2.过程 1&#xff09;创建项目api 引用NETCore.MailKit包 2&#xff09;设置appsettings "EmailOptions": { "SenderName": "系统邮件", //发送者名称&#xff0c;可在代码中重新替换 "From…

C# 泛型

泛型&#xff1a;通过参数化类型来实现在同一份代码上操作多种数据类型。利用“参数化类型”将类型抽象化&#xff0c;从而实现灵活的复用。 1、C#的泛型能力由CLR在运行时支持&#xff0c;它既不同于C在编译时所支持的静态模板&#xff0c;也不同于Java在编译器层面使用“擦拭…

NuGet使用

1.创建类库方法 2.双击项目配置 <Project Sdk"Microsoft.NET.Sdk"><PropertyGroup><TargetFramework>net6.0</TargetFramework><ImplicitUsings>enable</ImplicitUsings><Nullable>enable</Nullable><!--以下是…

sql server 各种等待类型-转

等待的类型 资源等待当某个工作线程请求访问某个不可用的资源&#xff08;因为该资源正在由其他某个工作线程使用&#xff0c;或者该资源尚不可用&#xff09;时&#xff0c;便会发生资源等待。资源等待的示例包括锁等待、闩锁等待、网络等待以及磁盘 I/O 等待。锁等待和闩锁等…

JWT使用

1.理解 jwt只是一个加密解密工具 类似一个base64一样加密解密 只是jwt解密出来格式相对固定 jwt内容区域需要单独进行加密处理 2.网站&#xff1a;JSON Web Tokens - jwt.io 3.使用 引用 using Microsoft.IdentityModel.Tokens; using System.IdentityModel.Tokens.Jwt…

用接口实现的一个pdo工具类

<?php //定义一个pdo工具类 class DAOPdo implements I_Dao {//配置信息private $_host;private $_root;private $_dbname;private $_pw;private $_port;private $_charset;//pdo对象private $pdo;//pdo结果集对象private $result;//被影响的记录数private $affected_row;/…