考虑两个线程A和B
他们在同一时间提交:A.lock-> A.validation-> B.lock-> B.validation->(AB安装更新)
这不是可序列化的,因为B在A提交之前可能会覆盖A的读取吗?
最佳答案
它的是可序列化的,因为写入事务A的writeset的值取决于在验证过程中确认的A的readset的缓存的值。 B覆盖A的readset不会影响A的写入所基于的A的readset的缓存值。写入事务A的writeset的值与如果事务A在事务B开始之前运行完成时要写入的值完全相同,因此它是可序列化的。
示例
我们有一个事务性存储器,包含3个变量X,Y,Z = X1,Y1,Z1
事务A读取X,然后将Y写入取决于X的值(X + P)
事务B读取Z并将其写入X的值取决于Z(Z + Q)
序列化执行
交错执行
关于multithreading - 事务锁定2算法可序列化吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27453984/