Asp.net core Asp.net核心线程安全全局变量

Asp.net core Asp.net核心线程安全全局变量,asp.net-core,Asp.net Core,我有一个.net core razor应用程序,它有一个特殊的用例,在这个用例中,我需要一个全局计数器,它会随着每个请求而递增,但它应该保持线程安全 同样在web应用程序加载时,将使用实体框架从数据库读取此计数器 我不认为静态变量在这种情况下是线程安全的(因为它可以被一个请求读取,然后在另一个请求读取之前的值后被修改) 所以我想知道是否需要锁定机制。如果您从数据库中读取计数器,我假设每个请求都会增加值并将其保存在数据库中?我更喜欢在这种情况下使用锁定 这可能是一个幼稚的解决方案,但我就是这样解决

我有一个.net core razor应用程序,它有一个特殊的用例,在这个用例中,我需要一个全局计数器,它会随着每个请求而递增,但它应该保持线程安全

同样在web应用程序加载时,将使用实体框架从数据库读取此计数器

我不认为静态变量在这种情况下是线程安全的(因为它可以被一个请求读取,然后在另一个请求读取之前的值后被修改)


所以我想知道是否需要锁定机制。

如果您从数据库中读取计数器,我假设每个请求都会增加值并将其保存在数据库中?我更喜欢在这种情况下使用锁定

这可能是一个幼稚的解决方案,但我就是这样解决的:

private静态对象_requestLock=new object();
公共字符串UpdateCounter()
{
//它也可以配置具有许多不同记录的表,其中之一就是计数器值
var counter=_dbContext.Counters.FirstOfDefault();
锁(_requestLock)
{
计数器.Value++;
}
_dbContext.SaveChanges();
}
我不明白“_requestLock=new object();”的部分,您是在将requestLock实例化为空对象吗?