如何为使用localthread

时间:2018-05-10 17:58:33

标签: c# arrays thread-local

我想要一个线程本地的数组,并希望使用ThreadLocal。但是如何从阵列中提取尺寸呢?

这是不可能的:

class Foo
{
    ThreadLocal<int[]> bar;
    public Foo()
    {
        bar = new ThreadLocal<int[10]>();
    }
}

2 个答案:

答案 0 :(得分:0)

您可以使用带有Func<T>&#34; valueFactory&#34;的构造函数。创建它:

class Foo
{
    ThreadLocal<int[]> bar;
    public Foo()
    {
        bar = new ThreadLocal<int[]>(() => new int[10]);
    }
}

See the MSDN page for more information

答案 1 :(得分:0)

ThreadLocal中的泛型参数指定要执行的任务的返回值的类型。无需在其上提供任何大小,只需从中返回一个数组:

bar = new ThreadLocal<int[]>(() => new int[10]);

这与使用返回数组的普通方法相同:

int[] DoSomething()
{
    return new[10] { ... };
}