1
5
软件事务性内存中的“事务”概念是从数据库中显式借用的。不同之处在于事务在何处实现以及如何使用它们。 STM是一个语言级的概念:在提交事务之前,操作序列不会生效。通常,这意味着某些全局/共享变量的值只有在事务成功时才会更改。属性由语言运行时强制执行。没有持久性的固有概念:事务中涉及的变量在本质上可能是纯动态的(例如,工作队列的大小)。 数据库事务是应用程序级的概念:在提交事务之前,数据操作的序列不会生效。因为这是一个数据库,持久性是基本的:在数据库内部“生效”的意思是数据保存在某个持久存储中。 您可能会使用数据库和数据库事务来实现STM风格的算法,但是您将失去语言级实现的易用性和方便性(在大多数情况下可能是性能)。 |
2
4
STM事务 与数据库事务有很多共同点 . 特别是,对于数据库设计人员来说,对于ACID属性很重要,STM提供原子性和隔离。但是,一致性取决于程序员,例如,您可以编写违反内部数据结构不变量的STM事务。最后,STM事务通常是不持久的;结果存储在易失性RAM中,如果成功事务后机器崩溃,结果可能会丢失。在我看来,这可能是STM事务和数据库事务之间最显著的区别。 |
3
1
STM主要用于并发性,而数据库事务是关于数据一致性的。 |
a a · 为什么在这个可重入锁示例中需要引用计数? 2 年前 |
Grant · goroutines有高空闲唤醒电话 2 年前 |
hoaz · 如何安全地清理并发映射 6 年前 |
Alanpatchi · int基元类型的volatile声明 6 年前 |