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

         最近要优化一个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-窗口-并行任务/并行堆栈,是推荐的分析工具

       

     

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值