【问题标题】:Is my understanding of transactional memory as described below correct?我对下面描述的事务内存的理解是否正确?
【发布时间】:2020-12-22 14:59:59
【问题描述】:

我正在尝试理解 TM。我已经阅读了 Ben 的回答 here 并试图了解互联网上的其他一些文章。我仍然不太确定我是否理解正确。在我对事务内存的理解中,线程可以并行执行事务。如果两个(或更多)线程尝试访问同一个事务变量,则除一个之外的所有线程都将中止事务并重新开始(在某些时候,不一定立即)。不中止的更新事务变量。

简而言之,在 TM 中,所有线程都并行运行,我们希望事务变量不会有任何访问重叠,如果有,我们只让一个线程继续,而其他线程回滚并重试。这种对 TM 的理解正确吗?

【问题讨论】:

    标签: concurrency parallel-processing transactions transactional-memory


    【解决方案1】:

    这是一个很好的概要。细节相当复杂,某些事务可能无法在给定的 TM 监视器中表达;这意味着您可能必须包含交易的两种实现——一种是乐观的,一种是悲观的。

    缓存是底层实现;当您对内存进行事务性引用时,缓存会记录这一点,并在任何这些引用被修改时生成警报(重新启动),或者如果有任何引用被修改,则拒绝事务关闭。

    一般来说,事务变量的数量可能必须低于缓存的关联性;否则他们会从缓存中互相驱逐,导致交易永远无法完成。

    事务中的中断如何发挥作用仍然是一个悬而未决的问题。

    简而言之,这是 20 年前的一个有趣的想法。随着它接近一般可用性,它似乎有快速扩展的硬件需求。与加速计算机系统相比,它对于温暖寒冷的气候可能更有用。

    【讨论】:

      猜你喜欢
      • 2020-03-03
      • 2012-10-14
      • 1970-01-01
      • 2018-04-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-06-17
      相关资源
      最近更新 更多