论坛首页 综合技术论坛

语义与并行不可分,兼回qiezi的Blog

浏览 15418 次
该帖已经被评为精华帖
作者 正文
   发表时间:2008-03-06  
引用
没有什么人做真正的 concurrent GC 了,hard real-time 那个圈子本来就小,而且工程实践上并没有太多的价值。不过多核平台上面的 GC 这个研究方向很热,Microsoft Research 最近在 ISMM07' 上发了一篇文章,介绍了一个 .net runtime 上的新 GC 系统 Stopless,号称:

Stopless is the first collector that provides real-time responsiveness while preserving lock-freedom, supporting atomic operations, controlling fragmentation by compaction, and supporting modern parallel platforms.

打算去看看。嘿嘿,或许这个问题在命令式语言上也并非无解啊,

刚才瞄了一眼.貌似主要精力是解决multi-core下的compact memory fragment的copy object问题。在uni-core下这不是一个问题,因为collector 在做compact的时候总是保证只有一个thread运行,从orgin object shift到copied object是很简单的事情。但是在multi-core下stop all threads 代价太大了,貌似他的意思是在使用同步锁的情况下还好,还可以reorder access,但是在支持CAS的情况下就麻烦了.具体的问题还没细看.
总的感觉,就算是这东西能解决问题吧,但是实在是够复杂的.在FP里面这些根本不用考虑啊,连mark-sweep的算法都可以做成non-moving的,或者干脆reference counting.复杂程度不是一个数量级的.命令式语言在这个方面,简直就是一辆老破车,不是mark上出问题,就是compact上性能下降。堵住了一个问题又出一个新问题,这些算法就像是补丁一个个贴上去,简简单单一个GC搞得像老太婆的裹脚布又臭又长.那么多聪明的脑袋花费在这个问题上实在是不值得啊不值得


另,烤肉烤肉......
0 请登录后投票
   发表时间:2008-03-06  
要搞 copying 或者是 mark-compact 主要是为了内存分配开销低好吧,如果 non-moving 的 mark-sweep 系统好用的话,命令式语言也可以不用担心这个 reference update 问题了。而且在现在的多处理器共享内存的体系结构下面,就算是 pure functional 一样会有人去研究怎么利用共享堆的 —— 传递一个指针要比复制整份数据结构效率高多了。

PS:你这家伙总是烤肉,难道上辈子真的是头巾众咩?
0 请登录后投票
论坛首页 综合技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics