我一直在阅读有关 Haskell 和STM的Beautiful Concurrency文章。
给出的示例是银行账户转账。
它是一个点头银行转账——它位于堆内存中的两个数字之间。
这立即在我脑海中提出的问题是:
该传输如何以原子方式撞击磁盘。直到银行交易以持久 - ACID - 方式记录之前,它还没有在我的书中发生。人们如何使用像 Haskell 这样的语言——它不允许你在 STM 中进行任何 IO——实际上是如何对数据进行原子更改,而不仅仅是在易失性内存中?
如何将其分发到多台机器上;您如何拥有分布式事务和横向扩展应用程序(STM 内部没有 IO)?