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}");
            });

 

posted @ 2022-02-22 13:36  江境纣州  阅读(238)  评论(0编辑  收藏  举报