您的位置:首页 > 编程语言

设计模式--.NET并行编程"读书笔记

2013-02-01 16:14 239 查看
最近要优化一个FIFO缓冲,对读写效率要求很高,想了很多办法,网上也看了不少代码,都没有太合适的,无奈之下把"设计模式--.NET并行编程"这本书速读了一遍,临阵磨枪,能优化一点是一点吧。最后留在脑子里几条印象,记录在此,算是作为一个读书笔记吧。说是印象,也就未必很准确了。

1. 考虑并行时先想清楚是数据并行还是任务并行

2. Parallel.ForEach,Parallel.For,from xxx in source.AsParallel() select xxx,之类的方法很容易将集合操作转成并行的,但是循环最好别携带依赖,不然就很麻烦(为啥麻烦,咋解决麻烦,此处省略1000字)

3. 并行循环有一堆参数能控制其中断、停止、异常、运行状态等等,用到时候再说

4. Task 是绝对的好东西,大部分Thread,ThreadPool都可以用Task替换。Task.WaitAll(), Task.ContinueWith(),Task.ContinueWhenAll()可以把Task串起来,组成复杂的过程, Task<T> 就是有结果的Task,T就是结果, 把Task用作函数参数或返回值类型的时候,思路骤然开阔,灵活啊~~

6. 流水线模式,基于BlockingCollection<T>实现,会用其GetConsumingEnumerable()和CompleteAdding()方法就行

7. 共享数据结构推荐BlockingCollection<T>,ConcurrentBag<T>,ConcurrentDictionary<T>,ConcurrentQueue<T>,ConcurrentStack<T>,少用锁,尽量用上面这几个线程安全的集合类

8. 程序调试,停止断点时,点选vs菜单 debug-窗口-并行任务/并行堆栈,是推荐的分析工具
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: