我如何在对象上模拟交易。例如,我想从一个集合中删除该项目,然后将同一项目作为原子操作添加到另一个集合。可以在出现故障时进行大量检查并回滚所有内容,但这很烦人。 是否有任何技术(使用什么语言(Java/C++/C#)没有区别)来实现这一点。
最佳答案
当您使用不可变集合时,这类事情会变得更容易。在不可变集合中,添加或删除成员不会更改集合,它会返回一个新 集合。 (实现可以使用可接受的少量时间和空间做到这一点的不可变集合是一个棘手的问题。)
但是如果你有不可变的集合,逻辑就变得容易多了。假设你想将一个项目从左集合移动到右集合:
newLeft = left.Remove(item);
newRight = right.Add(item);
左右没有变化;他们是不可变的。现在您要解决的问题是 left = newLeft 和 right = newRight 的原子集,这不是很难解决的问题。
关于c# - 如何在对象上进行交易,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2877234/