TPL -局部变量一次性初始化

本文关键字:初始化 一次性 局部变量 TPL | 更新日期: 2023-09-27 17:53:25

我有一个关于TPL的快速问题。我想为每个线程并行。对于一个只赋值一次且永远赋值的整数(在初始化时,不应该改变-特定于线程)。

我不能来任何工作,即使使用LocalStorage。

为例:4个线程,每个线程都有int localvar =初始化为{1,2,3,4},并且应该在所有for循环中保持相同的值

Many Thanks !

编辑

运行

 ParallelOptions options = new ParallelOptions();
                options.MaxDegreeOfParallelism = 4                
int ir = 0;
                Parallel.For(0, 10, options, () => ir++, (index, s, n) =>
                {
                    Console.WriteLine(n); return n;
                }, n => { });
结果为n = ir = 7

TPL -局部变量一次性初始化

使用一个接受本地init块的重载。它是专门为这个设计的:

int i = 0;
Parallel.For(0, 10, () => i++, (index, s, n) =>
{
    Console.WriteLine(n); return n;
}, n => { });