首页 > 编程语言 >Asp.Net Core 实现异步操作锁 (SemaphoreSlim)

Asp.Net Core 实现异步操作锁 (SemaphoreSlim)

时间:2023-07-18 17:33:28浏览次数:33  
标签:Core Asp SemaphoreSlim name int 线程 semaphore Console

/设置同时访问线程最大数量
static SemaphoreSlim _semaphore = new SemaphoreSlim(4);

static void AccessDatabase(string name, int seconds)
{
   Console.WriteLine($"{name} waits to access a database");
   _semaphore.Wait();
   Console.WriteLine($"{name} was granted an access to a database");
   Thread.Sleep(TimeSpan.FromSeconds(seconds));
   Console.WriteLine($"{name} is completed");
   _semaphore.Release();
}

static void Main(string[] args)
{
   for (int i = 1; i < 6; i++)
   {
       string threadName = $"Thread{i}";
       int secondsToWait = 2 + 2 * i;
       var t = new Thread(() => AccessDatabase(threadName, secondsToWait));
       t.Start();
   }
}

上面的代码 new 了一个 SemaphoreSlim 对象,设置访问线程最大数量为 4,开启 5 个线程,发现,线程 5 一开始一直处于等待状态,直到线程 1 完成了,调用了 _semaphore.Release() 释放,线程 5 才能执行后面的代码

标签:Core,Asp,SemaphoreSlim,name,int,线程,semaphore,Console
From: https://www.cnblogs.com/wangtiantian/p/17563617.html

相关文章

  • netcore模型配置
    模型配置可以通过FluentAPI和注解的方式FluentAPI步骤新建Products和Category类新建Products类ProductspublicclassProduct{publicintId{get;set;}publicstringName{get;set;}publicdecimalPrice{get;set;}......
  • net core-DotNetty
    DotNettyisaportofNetty,asynchronousevent-drivennetworkapplicationframeworkforrapiddevelopmentofmaintainablehighperformanceprotocolservers&clients.翻译一下:DotNetty是Netty的一个端口,用于快速开发可维护的高性能协议服务器和客户端。 ......
  • 理解ASP.NET Core - 限流(Rate Limiting)
    注:本文隶属于《理解ASP.NETCore》系列文章,请查看置顶博客或点击此处查看全文目录概述在微服务化的架构设计中,网关扮演着重要的看门人角色,它所提供的功能之一就是限流。而对于众多非微服务化的系统来说,可能并不会部署网关(无论是因为成本还是复杂度),在这种场景下,为了实现限流,微......
  • 重新整理 .net core 实践篇———承载[外篇]
    前言简单介绍一下承载。正文名称叫做承载,其实就是.netcore定义的一套长期运行的服务的规范。这个服务可以是web服务,也可以是其他服务,比如tcp,或者一些监控服务。这里以监控服务为例子:publicclassPerformanceMetrics{ privatestaticreadonlyRandom_random=newRa......
  • EF Core Like 模糊查询
    在EFCore中可用EF.Functions.Like()、StartWith、Contains、EndsWith实现模糊查询 EF.Functions.Like() 在EntityFrameworkCore2.0中增加一个很酷的功能:EF.Functions.Like(),最终解析为SQL中的Like语句,以便于在LINQ查询中直接调用。query=query.Where(d=>EF.Fun......
  • .NET Core6.0 通过EF的方式如何链接MySQL
    之前一直用的是EF链接SQLServer今天聊一聊EF链接MySQL第一步我们首先创建一个简单的用户实体类 这里呢创建了一个主键为string类型的用户Id和一个用户名称第二步我们创建一个类库里面创建上下文类 但是这里需要注意引用的NuGet包和链接SQLServer的包有个是不一样的这是......
  • java aspose填充数据word生成pdf
    使用AsposeJava填充数据并生成PDF作为一名经验丰富的开发者,你可以通过以下步骤教导刚入行的小白如何使用AsposeJava库来填充数据并生成PDF。下面是整个过程的流程图:步骤描述1加载Word文档模板2创建Document对象3获取Document对象的MailMerge属性4创建包......
  • net core-未来
    满足未来30年每周吃一个鸭子的需求为了计算从现在开始养多少只鸭子,以满足未来30年每周吃一个鸭子的需求,我们需要考虑以下几个因素:鸭子的寿命:鸭子的寿命通常在5到10年之间,具体取决于品种和饲养条件。我们可以假设鸭子的寿命为7年。繁殖周期:鸭子的繁殖周期平均为28天,这是鸭子......
  • net core-反向代理
    推荐使用框架:Yarp.ReverseProxy,微软开源的框架一基本使用varbuilder=WebApplication.CreateSlimBuilder(args);builder.Services.AddReverseProxy().LoadFromConfig(builder.Configuration.GetSection("ReverseProxy"));varapp=builder.Build();app.MapRevers......
  • asp.net core的中间件
    中间件是asp.netcore的核心,甚至可以说asp.netcorewebapi应用就是一个中间件管道,接口请求和响应一来一回。中间件,就是装配到这个管道中用来处理请求响应的组件。关于中间件的使用,有三个核心方法:核心方法Useapp.Use(async(context,next)=>{//代码awaitnext.I......