因为有个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]) ; });
结果: