Java Instrumentation浅析

原委
利用 乐观的并发控制在共享内存的粒度上,所构建的高层的同步控制机制就称作Software Transactional Memory(STM)。

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

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


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


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


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

你可能感兴趣的:(instr)