【问题标题】:Making sequences of events atomic in acid-state使事件序列在酸性状态下原子化
【发布时间】:2014-12-06 00:38:22
【问题描述】:

我正在努力将事件序列分组到一个原子事务中。

考虑以酸状态存储的Map,并假设您想要实现Data.Map.alter。接受可能值并返回值的函数无法存储在更改日志中,因此无法定义酸性事件Alter。但是,如果我编写一个函数调用query st Lookup ... 来查找旧值,然后调用update st Insert ... 来编写新值(或删除旧值),则会出现竞争条件,我可能会破坏发生在之间。

https://github.com/acid-state/acid-state/pull/48中,我用了一个额外的MVar来做手动加锁,但一定有更好的解决方案。

有什么想法吗?

【问题讨论】:

    标签: haskell acid-state


    【解决方案1】:

    这里是酸状态的作者。

    解决方案是不要使用像“alter”这样的高阶函数。酸性状态(ACID 保证、远程运行代码等)的好处是以仅使用可序列化数据为代价的。这个限制不太可能被解除。

    通常这不是一个大问题;只需专门化您的代码。如果这不能削减它,也许你想将你的状态保持在一个 MVar 中。

    干杯, 大卫。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-07-11
      相关资源
      最近更新 更多