我想让一系列内存中的操作成为原子。我假设没有框架提供的功能,我必须使用纪念品(或其他东西)实现我自己的回滚功能?
答案 0 :(得分:2)
如果它需要真正原子化,那么框架本身就没有AFAIK这样的东西 - an interesting link discussing this issue。
你问的是STM(软件事务存储器),并且是Haskell的固有部分。
基本上任何实现都使用某种复制机制 - 要么保留旧数据直到提交事务,要么首先制作副本然后对副本执行所有“更改”并在提交时切换引用...总之一些日志和/或涉及的复制机制......
对于C#,请检查以下链接:
如果F#是一个选项,请检查这些链接:
另一种选择可能是使用“内存数据库” - 有几个有事务支持因此通过DB提供原子操作......只要数据库是“内存中”它应该执行井