Java Instrumentation浅析

[size=xx-large][color=blue]原委[/color][/size]
利用[url=http://en.wikipedia.org/wiki/Optimistic_concurrency_control]乐观的并发控制[/url]在共享内存的粒度上,所构建的高层的同步控制机制就称作Software Transactional Memory(STM)。

命名渊源起于:
【1】Transactional是指乐观的并发控制中所需要提供的事务回滚特性。而基于锁的并发控制在获得所有所需锁之前只会Block,一旦获得所有锁开始操作之后是不需要回滚的(除非出现死锁)。
【2】首先由Tom Knight在1986年提出的Hardware Transactional Memory,随后由Nir Shavit和Dan Touitou在1995年提出了完全在软件层面实现的Transactional Memory。

STM从2005年开始成为流行的热点。


[size=xx-large][color=blue]优点1:性能高[/color][/size]
理论上,最坏情况下,n个并发任务的执行时间空间复杂度都为O(n),具体的复杂度也依赖实现细节。性能通常会比基于锁的机制要好。


[size=xx-large][color=blue]优点2:概念简洁[/color][/size]
基于锁的同步机制暴露给对于高层程序员的概念抽象不太友好,久为诟病的点包括:
[list]
[*]需要设计并发段
[*]需要设计防死锁机制
[*]需要设计抢占机制,否则就有可能造成高优先级任务饥饿
[/list]

[size=xx-large][color=blue]缺点[/color][/size]
在事务commit的时候如果发现Read Buffer中有旧版本数据则需要回滚事务。事务的可回滚特性使得无法进行回滚的操作无法在STM中直接实现,例如:I/O。

你可能感兴趣的:(已索引)