Task.Factory.New多线程中的循环
1、for循环:当闭包通过lambda表达式捕获可变变量时,lambda捕获变量的引用,而不是捕获该变量的当前值。因此,如果任务在变量的引用值更改后运行,则该值将是内存中最新的值,而不是捕获变量时的值。
for (int i = 0; i < 10; i++) { Task.Factory.StartNew(() => Console.WriteLine($"{Thread.CurrentThread.ManagedThreadId}~{i}")); }

2、Parallel.For
Parallel.For(0, 10, (i) => Console.WriteLine($"{Thread.CurrentThread.ManagedThreadId}~{i}"));

3、Parallel.for中断,中断不能保证当前迭代不会执行
Parallel.For(0, 10, (i, status) => { if (i > 6) status.Break(); Console.WriteLine($"{Thread.CurrentThread.ManagedThreadId}~{i}"); });


浙公网安备 33010602011771号