Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/289.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/iphone/39.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 每个线程存储数据 博览会_C#_.net_Multithreading_Task Parallel Library_Task - Fatal编程技术网

C# 每个线程存储数据 博览会

C# 每个线程存储数据 博览会,c#,.net,multithreading,task-parallel-library,task,C#,.net,Multithreading,Task Parallel Library,Task,我需要对大量数据进行处理。 我可以用result[I]=F(SomeSubsetOf(input))的形式表示我的计算,因此并行执行所有这些计算非常容易。问题是我在一些操作中使用了一个临时缓冲区,我不想为每个计算分配一个,我只想在每个线程的基础上分配它们 实际问题 如何将变量定义为每个线程唯一。例如: int Calculate(byte[] buffer, int resultIndex) { byte temp = new byte[8]; CopyStuff(buffer

我需要对大量数据进行处理。 我可以用
result[I]=F(SomeSubsetOf(input))
的形式表示我的计算,因此并行执行所有这些计算非常容易。问题是我在一些操作中使用了一个临时缓冲区,我不想为每个计算分配一个,我只想在每个线程的基础上分配它们

实际问题 如何将变量定义为每个线程唯一。例如:

int Calculate(byte[] buffer, int resultIndex)
{
    byte temp = new byte[8];

    CopyStuff(buffer, resultIndex -4 , temp, 8) // please dont be pendatic about this line

    DoSomeStuff(temp)l

    return GetAverage(temp);
}
现在我打算使用
Parallel运行这个函数。For
temp
必须只对每个正在执行的线程是唯一的,并且显然可以为同一线程执行的每个计算循环使用。
实现这一目标最简单、最有效的方法是什么

您可以将
temp
声明为属性,包装在
ThreadLocal
中,然后通过
value
属性访问其值


另请参见。

我在这里使用了第三个参数:

它为执行迭代的每个任务初始化本地数据