随笔 - 130,  文章 - 0,  评论 - 282,  阅读 - 23万

随笔分类 -  TPL

Task Parallel Library
在finally中调用一个需要await的方法
摘要:最近在把code改写成async+await的形式,发现有些情况下需要在finally中需要调用异步方法,但是编译器不允许在cache和finally中出现await关键字。。。但是用Wait()或者Result又会导致一些其他稀奇古怪的毛病(死锁啦,AggregateException啦。。。... 阅读全文
posted @ 2014-08-20 14:10 Zhenway 阅读(1201) 评论(0) 推荐(1) 编辑
加载时预防并发执行
摘要:最近代码里面写了一个缓存,有了一个简单的想法:通常我们会有一个Cache(例如:MemoryCache)去缓存一些对象,那么当这个缓存项过期时,可能同时有很多线程都需要这个缓存项,那么就会有并发的去加载的情况发生,当然,如果这个加载时间并不长的话,那也没什么问题,但是如果加载过程本身比较慢,又比较消耗资源的话,恐怕就比较杯具了。那么如果能让Cache不命中时,加载过程能串行,那么也有个问题,不通的缓存项在加载过程中其实不需要串行,这样整体的效率又会下降。于是,我思考了一种既能每个资源串行加载,又能保证不同资源并行加载的方式。简单的看就是:这里用到了一个loader task,问题是这个load 阅读全文
posted @ 2014-01-14 12:27 Zhenway 阅读(545) 评论(0) 推荐(0) 编辑
关于Task的线程窃取
摘要:示例代码: 1 static void Main(string[] args) 2 { 3 ThreadPool.SetMaxThreads(4, 1000); 4 object locker = new object(); 5 const int TaskCount = 10; 6 7 Task main = Task.Run(() => 8 { 9 var mainTid = Thread.CurrentT... 阅读全文
posted @ 2013-09-17 15:54 Zhenway 阅读(413) 评论(0) 推荐(0) 编辑
虚方法的代价
摘要:起因 昨天看到了一篇文章,说到并行库的效率问题,在最后lz也发现是因为CPU的超线程技术,导致实际效率不能接近算上开启超线程的核心数量,而在接近关闭超线程的核心数量。不过文中提到了一点:“不过另一个问题有也出来了,为什么我那简单的改进算法相对效率那么高。”分析 原作者在今天又发文章说是循环方式的不同导致差异,虽然没有点击中要害,不过也算是给出了个范围。 首先准备一个测试工程: class Program { private long[] data; static void Main(string[] args) { Program p = new Program(); p.Test(); } 阅读全文
posted @ 2011-07-15 14:22 Zhenway 阅读(2008) 评论(10) 推荐(5) 编辑
学习TPL(四)
摘要:引子     现在要实现这样一个任务: 下载一段内容(内容本身很小) 这段内容在3个已知路径上存在,并且确认是完全相同的(也就是镜像) 由于程序执行的网络环境不明,3个镜像的到达速度肯定有快慢     于是,可以很简单的写出这样一段TPL的代码:     在Main中执行Test方法可以看到:Outer... 阅读全文
posted @ 2010-05-21 13:43 Zhenway 阅读(416) 评论(0) 推荐(1) 编辑
学习TPL(三)
摘要:上集回顾 上集讨论了TPL的线程安全问题,以及很粗浅的讨论了一些关于TPL的性能问题。这一集中,暂时抛开这些,直接来讨论一下TPL带来的一个非常强大的新功能——异步撤销。 应用场景 还记得线程池吧,利用线程池,按顺序每秒输出一个0-9数字: 但是,如果还要有取消功能哪? 为了取消,我们不得不把代码写成这样: 认为很好吗?不,一点也不好,isCancelled会被多个... 阅读全文
posted @ 2010-04-21 00:08 Zhenway 阅读(1464) 评论(1) 推荐(4) 编辑
学习TPL(二)
摘要:回顾 前面一篇简单的介绍了TPL,以及一个最简单的例子。这一篇,来讨论一下线程安全的问题。 TPL不需要考虑线程安全? 好吧,我不知道为什么会有人提出这样的想法,首先要确定的是在MS的开发人员是人,不是神,不可能让一个类库聪明到这样的程度。要是真的有这么聪明的话,估计我们都可以转行做需求分析了,更不不需要写代码的人了。 如何证明考虑线程安全是必要的哪?来一个简单的示例就可以了: 由于写这篇... 阅读全文
posted @ 2010-04-18 13:18 Zhenway 阅读(1422) 评论(1) 推荐(2) 编辑
学习TPL(一)
摘要:这周vs2010发布了,不少文章都在Show那些vs2010的新体验,这里我也凑个热闹,也来写写。 什么是TPL TPL是Task Parallel Library的简称,也就是Framework 4.0中新加入的类库之一,这个类库里面最著名的要算是PLinq了(说到PLinq,大家一定瞬间就知道了吧)。但是PLinq只是TPL把其中最常用的内容使用Linq兼容的语法提供给大家,方便使用,所以... 阅读全文
posted @ 2010-04-16 15:13 Zhenway 阅读(14581) 评论(1) 推荐(7) 编辑

< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

点击右上角即可分享
微信分享提示