有没有人尝试过C ++的事务性内存?

时间:2020-03-05 18:58:42  来源:igfitidea点击:

我正在检查Intel的" whatif"站点及其事务性事务编译器(每个线程必须进行原子提交或者回滚系统的存储器,就像数据库一样)。

替换锁和互斥锁似乎是一种有前途的方法,但是我找不到很多推荐。这里有人有输入吗?

解决方案

回答

在某些情况下,我认为这是有用的,甚至是必要的。

但是,即使处理器具有使该过程更容易的特殊指令,与互斥量或者信号量相比,仍然存在较大的开销。根据实现方式的不同,它也可能会影响实时性能(必须停止中断或者阻止中断写入共享区域)。

我的期望是,如果实现了此功能,则仅对于给定存储空间的某些部分才需要这样做,因此影响可能会受到限制。

-亚当

回答

我没有使用过英特尔的编译器,但是,Herb Sutter对此发表了一些有趣的评论...

从萨特讲:并发的未来

我们是否对事务内存感兴趣并使用了很多事务,还是这个概念对于大多数开发人员来说太难了?

由于尚未将其投放市场,因此尚无法回答谁在使用它。英特尔拥有软件事务性内存编译器原型。但是,如果问题是"开发人员难于使用吗?"答案是我当然希望不会。重点是,它比锁更容易。这是研究视野中唯一的主要事物,它寄希望于极大地减少我们使用锁的希望。它永远不会完全取代锁,但这是我们唯一希望将其部分取代。

有一些限制。特别是,某些I / O本质上不是事务性的,我们不能采用原子块提示用户输入名称并从控制台读取名称,并且如果该I / O与另一个事务冲突,则将自动中止并重试该块;如果我们两次提示用户,则用户可以分辨出差异。事务性内存非常适合仅涉及内存的事物。

我认识的每个主要硬件和软件供应商在研发中都有多个事务存储工具。有关于基本问题的理论答案的会议和学术论文。我们还没有进入T型阶段,我们可以将其交付。我们可能会看到早期有限的原型,在这些原型中,我们无法执行无限制的事务性内存,而只能读取和写入100个内存位置。不过,这对于启用更多无锁算法仍然非常有用。

回答

Dobb博士去年发表了有关该概念的文章:Calum Grant的事务性编程-http://www.ddj.com/cpp/202802978

它包括使用他的示例库的一些示例,比较和结论。

回答

Sun Microsystems宣布他们将在明年发布代号为Rock的新处理器,该处理器具有对事务性内存的硬件支持。它将有一些局限性,但这是一个很好的第一步,应该使程序员可以更轻松地用事务替换锁/互斥体,并期望其具有良好的性能。

Sun从事事务性存储和岩石研究的研究人员之一马克·莫尔(Mark Mtheitroad)对此主题进行了有趣的演讲,请查看此链接。

有关Sun总体上有关Rock和Transactional Memory的更多信息和公告,请访问此链接。

强制性维基百科条目:)

最后,该链接位于威斯康星大学麦迪逊分校,包含关于事务性存储器的已经和正在进行的大多数研究的书目,无论它是硬件还是软件。