与基于参与者的同步和基于锁的同步相比,事务性内存是什么?
据我所知,这是另一种并发控制机制。或者它是与演员、事件、锁等完全不同的东西?
发布于 2017-01-24 22:07:54
事务存储器(TM)是一种无锁同步方法。在基于锁的同步机制中,一个线程获取锁并进入同步块,而其他线程等待直到锁可用。在TM中,线程不等待锁,每个线程都继续执行,就好像锁是可用的一样。然而,为了确保执行的正确性,在同步块内进行的所有存储器访问都是推测性的。一旦执行到达同步区的末尾,线程就会相互通信,并共享读写的内存位置(在TM术语中称为读集合和写集合)。如果一个线程已经读取了另一个线程推测性写入的内存位置,则会发生冲突,并将发生冲突解决。最后,如果两个或更多线程没有冲突,它们都可以继续,并将使用推测性写入更新内存。尽管实现涉及到复杂性,但通过编写类似于粗粒度锁的程序(只需指定事务的开始和结束),您可以获得细粒度锁定(基于内存位置)的优势。
有几十个TM系统基于您如何进行数据的版本控制(原始数据与推测性数据)和冲突解决(急切-随心所欲,懒惰-最终完成)。以及它们在其中实现的平台(硬件、软件、HyBrid)。
我不太擅长基于角色的并发。以我有限的知识,它似乎是通过向其他演员发送消息来工作的,每个演员都完成了它被要求做的工作,如果需要的话,还可以创建更多的演员。所以我猜,从概念上讲,它类似于分而治之的编程风格,在这种编程中,工作是在飞行中创建的,并在可用的参与者之间传递。这种类型的范例与函数式编程类似,与需要同步的传统共享内存风格是正交的。因此,我猜,基于角色的模型不需要锁或锁自由同步,因为它们本质上是并行的。
https://stackoverflow.com/questions/41829838
复制相似问题