c# Parallel.For 并行编程 执行顺序测试

本文探讨了使用C# Parallel.For进行并行编程时遇到的执行顺序问题。当并行处理要求结果顺序时,直接使用Parallel.For可能无法满足需求。作者通过初始化一个顺序列表并在循环中按顺序赋值,解决了这个问题。测试结果显示,这种方法可以实现预期的顺序,但并行线程的使用仍具有一定复杂性。最终,通过改变添加值的方式,成功解决了顺序问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 因为有个for 实际执行结果尽管是按照for里边的顺序执行,但处理器让哪个分线程先执行,谁先处理完就不一定了.

对于要求结果需要先后顺序的,比如对text内容的操作, 用并行 Parallel.For 操作,不做进一步优化处理,那结果就不是想要的了,还要l用它的并行的功能所以要多程序进行改进,

我使用的做法是初始化buffer list 把list数组的顺序定下来,在循环中,把对应的值顺序赋值给list.    这样做可能写的有点死,根据实际应用调整启动循环的数量实际运行起来效果不错.

做了个简单的测试,同时赋值多个字符串,打印list字符串的值,

 string a = "sssssssssssssssssssssssssssssssssssssssssss";
            string b = "jjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjj";
            string c = "nnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnmmm";
            string d = "ssssssssssssssssssssssssssssssssssssssssssssssssss";
            string o = "hhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh";
            string f = "ttttttttttttttttttttttttttttttttttttttttttttttttttt";
            List<string> la = new List<string>();
            la.Add(a);
            la.Add(b);
            la.Add(c);
            la.Add(d);
            la.Add(o);
            la.Add(f);
            Parallel.For(0, 6 /*portion*/, (i, ParallelLoopState) =>
            {
              Console.WriteLine(la[i]) ;
            });

结果:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值