我正在努力将事件序列分组到一个原子事务中。
考虑Map
以酸状态存储,并想象您想要实现Data.Map.alter
. 接受可能值并返回 1 的函数无法存储在更改日志中,因此无法定义酸性事件Alter
。但是,如果我编写一个调用query st Lookup ...
查找旧值然后update st Insert ...
写入新值(或删除旧值)的函数,则会出现竞争条件,我可能会破坏其间发生的更新信息。
在https://github.com/acid-state/acid-state/pull/48中,我使用了一个额外的MVar
来进行手动锁定,但必须有更好的解决方案。
有任何想法吗?