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