c# - 如何在对象上进行交易

标签 c# java c++ transactions

我如何在对象上模拟交易。例如,我想从一个集合中删除该项目,然后将同一项目作为原子操作添加到另一个集合。可以在出现故障时进行大量检查并回滚所有内容,但这很烦人。 是否有任何技术(使用什么语言(Java/C++/C#)没有区别)来实现这一点。

最佳答案

当您使用不可变集合时,这类事情会变得更容易。在不可变集合中,添加或删除成员不会更改集合,它会返回一个 集合。 (实现可以使用可接受的少量时间和空间做到这一点的不可变集合是一个棘手的问题。)

但是如果你有不可变的集合,逻辑就变得容易多了。假设你想将一个项目从左集合移动到右集合:

newLeft = left.Remove(item);
newRight = right.Add(item);

左右没有变化;他们是不可变的。现在您要解决的问题是 left = newLeft 和 right = newRight 的原子集,这不是很难解决的问题。

关于c# - 如何在对象上进行交易,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2877234/

相关文章:

C# 如何实现终止处理程序

c# - finally block 中的多个操作

java - 当通过执行程序服务将任务提交到线程池中的线程时,如何确保一次只有一个线程可以占用一个同步任务?

java - JOOQ - 将 fetchOne().into() 转换为 fetchValue(query)

c# - 如何检查线程是否完成,然后在 C#/WPF 中填充进度条

c# - 字符串连接最佳实践

java - 在事务中插入后获取 id (Oracle)

c++ - 在不透明物体内部绘制透明物体

c++ - 将罗马数字转换为 Int - 得到错误的输出 - 为什么?

c++ - 使用 Cmake 安装时创建动态库