论坛首页 综合技术版

OO思想里被遗忘数十年前的远见-----一篇经典论文的读后.

浏览 18551 次
该帖已经被评为良好帖
作者 正文
最后更新时间:2008-04-09
robbin 写道
M社的东西搞的再好也只能在Windows上面得到真正的支持,就这一大缺陷就可以排除在外不予考虑了。

赫赫,我这里只关心理论上的可能.动态语言在Multi-core下会比较艰难,因为没有类型意味着编译器并行优化基本就放弃了,而静态类型语言可以通过type inference来取代动态语言简洁的优势,此消彼长前景堪忧.另外M社的新平台singularity在Message Passing上可以说垮了一大步,比Erlang更深入地层.
目前来看并行/并发上,大厂家也只有M社摸对了路子Message Passing ,STM两手都要抓两手都要硬,要说非M社的产品,除了Erlang之外难道是Haskell?不过这个选择太诡异了吧.
   
0 请登录后投票
最后更新时间:2008-04-09
更正一下,如果没有强大的类型系统.很可能连STM的语义都无法保证更别提优化了.
   
0 请登录后投票
最后更新时间:2008-04-09
delete 写道
robbin 写道
M社的东西搞的再好也只能在Windows上面得到真正的支持,就这一大缺陷就可以排除在外不予考虑了。

MSR的Fsharp是可以跑在linux上面的,有mono啊。MS已经不是那么封闭了。。。。


Fsharp只是试验性质的。mono有人在用吗?
   
0 请登录后投票
最后更新时间:2008-04-09
delete 写道
Trustno1 写道
更正一下,如果没有强大的类型系统.很可能连STM的语义都无法保证更别提优化了.

STM是啥?
猜测1:shared transaction memory
猜测2:separated transaction memory

Software transactional memory
基本上可以理解为内存版的Transaction机制.这个东西没有了类型系统就根本没法玩.在dynamic语言里用来替代type check的人肉unit testing,在面对并发的非确定性上几乎就是恶梦.
   
0 请登录后投票
最后更新时间:2008-04-09
delete 写道
Trustno1 写道
delete 写道
Trustno1 写道
更正一下,如果没有强大的类型系统.很可能连STM的语义都无法保证更别提优化了.

STM是啥?
猜测1:shared transaction memory
猜测2:separated transaction memory

Software transactional memory
基本上可以理解为内存版的Transaction机制.这个东西没有了类型系统就根本没法玩.在dynamic语言里用来替代type check的人肉unit testing,在面对并发的非确定性上几乎就是恶梦.


大致能猜出来是transaction机制,不过猜测都错了。
问题是transaction机制本身和lock机制很类似啊。不都是独占?偶像给讲讲

独占只是在提交的时候独占.在未提交之前,全部写在本地的log里面.
STM不是lock free的,只是obstruction-free.就是说和synchronized不同的是,synchronized做的时候都是直接修改内存,然后对所有企图修改同一块内存的thread做obstruction.而STM是只是修改thread local的内存,提交的时候Check版本如果版本不对就rollback/retry.retry这个东西就是与DB的transcation最大的不同,DB是没有retry这一说的,rollback了就rollback了.但是STM可以retry,而且可以按照条件retry,比如说首先提交0当retry多少次后则提交1.我前面说的语义陷阱也就是出在retry上面,如果没有type check,retry就无法保证语义. 你要用unit test测试?你能测试到多少retry并发状态组合?更何况不同的STM还可以用ORELSE之类的原语进行复杂的组合.
   
0 请登录后投票
最后更新时间:2008-04-09
那这个STM是能在目前主流的硬件里纯软件实现,还是需要配套的硬件才能比较高效(高效到能够实用)?
   
0 请登录后投票
最后更新时间:2008-04-09
deerchao 写道
那这个STM是能在目前主流的硬件里纯软件实现,还是需要配套的硬件才能比较高效(高效到能够实用)?

Transcation Memory 有两种一种是 hardware transaction memory 靠专门的硬件.还有一种是 software Transcation memory 一般用CAS实现.但是我刚才说了STM一般不是lock-free的,只是obstruction-free的,因为CAS最多实现64bit,而且在multi-core上要靠Cache对齐,不能光靠这个.
   
0 请登录后投票
最后更新时间:2008-04-09
Trustno1 写道
deerchao 写道
那这个STM是能在目前主流的硬件里纯软件实现,还是需要配套的硬件才能比较高效(高效到能够实用)?

Transcation Memory 有两种一种是 hardware transaction memory 靠专门的硬件.还有一种是 software Transcation memory 一般用CAS实现.但是我刚才说了STM一般不是lock-free的,只是obstruction-free的,因为CAS最多实现64bit,而且在multi-core上要靠Cache对齐,不能光靠这个.


你最近在研究这个?你知道哪个会议讨论 STM 的文章比较多么?有没有比较好的综述文章?
   
0 请登录后投票
最后更新时间:2008-04-09
Elminster 写道
Trustno1 写道
deerchao 写道
那这个STM是能在目前主流的硬件里纯软件实现,还是需要配套的硬件才能比较高效(高效到能够实用)?

Transcation Memory 有两种一种是 hardware transaction memory 靠专门的硬件.还有一种是 software Transcation memory 一般用CAS实现.但是我刚才说了STM一般不是lock-free的,只是obstruction-free的,因为CAS最多实现64bit,而且在multi-core上要靠Cache对齐,不能光靠这个.


你最近在研究这个?你知道哪个会议讨论 STM 的文章比较多么?有没有比较好的综述文章?

PPoPP???这几年都是大热门吧,今年好像占了两个session
然则,关键是研究这个东西的牛人一坨坨的都在你们那里阿.

research.microsoft.com/ ~tharris/drafts/cpwl-submission.pdf
research.microsoft.com/~simonpj/papers/stm/stm.pdf
   
0 请登录后投票
最后更新时间:2008-04-10
虽然说“concurrent当作Object Orientation的设计的主要目标” 但OO的发展和壮大我想也出乎先辈的意料 当代的OO思想总的方针还是正确的 嘿嘿 个人愚见
   
0 请登录后投票
论坛首页 综合技术版

跳转论坛:
JavaEye推荐