枚举并发集合探讨
继续我们在并行编程和集合方面上的系列探讨,我们现在来讨论一下枚举可变集合的问题。由于有很多方式可选,选取正确的语义是比较难的,因此并行扩展团队(Parallel Extensions team)的 Stephen Toub就向大家征询反馈意见。
继续我们在并行编程和集合方面上的系列探讨,我们现在来讨论一下枚举可变集合的问题。由于有很多方式可选,选取正确的语义是比较难的,因此并行扩展团队(Parallel Extensions team)的 Stephen Toub就向大家征询反馈意见。
默认情况下,.NET对死锁检测没有任何的支持。一种常用的方法是通过加载调试器来逐个检测所有的线程来判断是否产生了死锁。现在,图形化调试工具 HawkEye的创造者Corneliu为我们提供了一个选择。他的ACorns.Debugging工具,可以在无须重新编译.NET程序的情况下对大部分死锁进行检测。
迭代器是.NET编程模型的核心。只有很少的开发人员以索引数据的方式工作,很多人都喜欢使用for-each循环来完成大部分任务。但是这种固有地顺序访问方式,在我们大量开发多线程应用程序的时候还适合吗?
多核处理器和松散耦合系统(如因特网)是多重处理器计算这一新趋势的两大推动力量,Peter Van Roy在2008国际计算机音乐会议(International Computer Music Conference 2008)上就此两种形式并行计算的相关问题题发表了看法,并提出了自己的解决方案。虽然这两种形式带来的挑战在本质上不尽相同,但是这些挑战都已经远在纯技术层面之上了。
Cliff Click博士是Azul Systems的资深工程师,他在今年的JavaOne大会上进行了一场关于用Java编写可伸缩、非阻塞代码的演讲。他利用这种编码方式用Java构建了多个锁自由的数据结构,在多个拥有数百个处理器的系统上成功地获得了良好的可伸缩性。
当博客作者Gustavo Duarte 宣称“学习新语言通常都是在浪费时间”时,他的观点受到了很大的争议。他说,“事实上,学习一种新的语言是桩得不偿失的买卖,把大量的精力花费在低价值的任务上,这种时间投资只能获得很少的回报。”但是,并非所有人都同意这种观点。