HttpContextAccessor 之singleton
2021-12-16 17:24 qgbo 阅读(308) 评论(0) 收藏 举报HttpContextAccessor 在.Net 系统中生命周期是singleton。
每一个请求来的时候不是应该New 一个 Context 吗?
它的源码中用到了这个:AsyncLocal<int>
每一个线程会保存它的本地的值。相当于线程的内部变量。
下面代码会打印:
100,100,100
300,300,100
100,100,100
300,300,100
var _local = 0; AsyncLocal<int> _asyncLocal = new AsyncLocal<int>(); ThreadLocal<int> _threadLocal= new ThreadLocal<int>();Task.Run(() =>
{
Thread.Sleep(200);
while (true)
{
_asyncLocal.Value = 100;
_threadLocal.Value = 100;
_local = 100;
Thread.Sleep(2000);
Console.WriteLine(_asyncLocal.Value + $" { _threadLocal.Value} " + _local);
}
});Task.Run(() =>
{
Thread.Sleep(200);
_asyncLocal.Value = 300;
_threadLocal .Value= 300;
_local = 300;
while (true)
{
Thread.Sleep(2000);
Console.WriteLine(_asyncLocal.Value + $" { _threadLocal.Value} " + _local);
}
});
Console.ReadLine();
气功波(18037675651)
浙公网安备 33010602011771号