zoukankan      html  css  js  c++  java
  • 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 (线程内变量)

  • 相关阅读:
    Examples
    Examples
    Examples
    Examples
    Examples
    Examples
    Examples
    Examples
    Examples
    如何把随机数或者对象添加到ArrayList集合
  • 原文地址:https://www.cnblogs.com/shikyoh/p/12421391.html
Copyright © 2011-2022 走看看