1

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

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

4

1 回答 1

1

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

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

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

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

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

于 2020-12-23T04:26:41.660 回答