C# AsyncLocal 和CallContext


AsyncLocal<string> data = new AsyncLocal<string>();

                data.Value = "lcc";


                for (int i = 0; i < 20; i++)
                {
                    var current = i;

                    Thread.Sleep(500 * current);
                    Task.Run(() =>
                    {

                        Console.WriteLine($"-----[{current}]-----Begin:{data.Value}");
                        data.Value = current + "lcc";
                        Console.WriteLine($"-----[{current}]-----End:{data.Value}");
                    });


                    Console.WriteLine($"-----[{current}]-----Current:{data.Value}");
                }

                Console.ReadLine();

运行结果:

 

 

 

 

 这是栈逃逸

CallContext   (线程上下文)

LogicalCallContext

ExecutionContext(执行上下文)

AsyncLocal  (多线程共享变量)

ThreadLocal (线程内变量)

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM