摘要: PLINQ这个话题好多书都写到过,这本也没有什么特别好的地方。几个有用和有趣的点记录一下。顺序的不确定性用PLINQ就一定要记住并行后会导致顺序不确定的问题。解决方案就是AsOrdered或者orderby子句。var keysWith10Letters = from key in Keys.AsParallel().AsOrdered()where (CountLetters(key) >= 10)&& (key.Contains('A'))&& (key.Contains('F'))&& (key.Con 阅读全文
posted @ 2013-08-04 20:09 atskyline 阅读(473) 评论(0) 推荐(0) 编辑
摘要: 本章介绍了一些轻量级的同步原语,其中有很大部分是.NET Framework 4才引入的。System.Threading.Barrier用于一段程序分成多个阶段,每个阶段的开始都需要之前的阶段完成。如果这段程序需要并行化。可以在每段之间采用Barrier。还可以设置在每个阶段之间的动作。task在Barrier中成为参与者(participant),在构造的时候要设定数量,也可以动态的增删。异常和超时的处理可以参考代码。相比于使用使用Task的ContinueWith方法实现多个阶段的串行,Barrier可以减少非常多的Task数量。用完后需要DisposeTask[] _tasks;Bar 阅读全文
posted @ 2013-08-04 16:56 atskyline 阅读(725) 评论(0) 推荐(0) 编辑