Wil*_*ill 5 concurrency haskell
我一直在阅读有关Haskell和STM的Beautiful Concurrency文章.
给出的示例是银行帐户转帐.
它是一个虚拟的银行转账 - 它位于堆内存中的两个数字之间.
我脑子里立即提出的问题是:
如何以原子方式转移磁盘.在以持久性 - ACID方式记录银行交易之前,我的书中没有这样做.人们如何使用像Haskell这样的语言 - 它不会让你在STM中做任何IO - 实际上真的会对不仅在易失性存储器中的数据进行原子变化吗?
如何在许多机器上分发它; 你怎么能有分布式事务和横向扩展应用程序(STM中没有IO)?
Mat*_*hid 10
STM用于线程同步和通信,而不是用于持久存储数据.换句话说,STM旨在让线程在它们之间共享数据而不会出现死锁或竞争条件.或者让线程相互发送信号.或者基本上是协调线程活动.
如果要将持久数据存储在磁盘上,请使用数据库.MySQL,PostgreSQL,Oracle等等.有一百万可供选择.这不是STM旨在解决的问题.
对于分布式处理......我们仍在努力.我并没有密切关注这些事情,以评论这与现实的接近程度.
人们如何使用像Haskell这样的语言 - 它不会让你在STM中做任何IO - 实际上真的会对不仅在易失性存储器中的数据进行原子变化吗?
通过IO中的库或类似的效果类型.例如ACID或"MACID"系统.
如何在许多机器上分发它; 你怎么能有分布式事务和横向扩展应用程序(STM中没有IO)?
我不知道Haskell的分布式STM实现,但是Cloud Haskell是GHC的分布式编程模型.