Thread local storage

前端 未结 4 1705
陌清茗
陌清茗 2020-12-08 07:21

what is the best way to store some variable local to each thread?

相关标签:
4条回答
  • 2020-12-08 07:25

    You can indicate that static variables should be stored per-thread using the [ThreadStatic] attribute:

    [ThreadStatic]
    private static int foo;
    
    0 讨论(0)
  • 2020-12-08 07:27

    If you use .Net 4.0 or above, as far as I know, the recommended way is to use System.Threading.ThreadLocal<T> which also gives lazy initialization as a bonus.

    0 讨论(0)
  • 2020-12-08 07:36

    Other option is to pass in a parameter into the thread start method. You will need to keep in in scope, but it may be easier to debug and maintain.

    0 讨论(0)
  • 2020-12-08 07:45

    Another option in the case that scope is an issue you can used Named Data Slots e.g.

        //setting
        LocalDataStoreSlot lds =  System.Threading.Thread.AllocateNamedDataSlot("foo");
        System.Threading.Thread.SetData(lds, "SomeValue");
    
        //getting
        LocalDataStoreSlot lds = System.Threading.Thread.GetNamedDataSlot("foo");
        string somevalue = System.Threading.Thread.GetData(lds).ToString();
    

    This is only a good idea if you can't do what James Kovacs and AdamSane described

    0 讨论(0)
提交回复
热议问题