簡體   English   中英

Haskell並發性和持久性

[英]Haskell concurrency and persistence

我一直在閱讀有關Haskell和STMBeautiful Concurrency文章。

給出的示例是銀行帳戶轉帳。

它是一個虛擬的銀行轉賬 - 它位於堆內存中的兩個數字之間。

我腦子里立即提出的問題是:

  1. 如何以原子方式轉移磁盤。 在以持久性 - ACID方式記錄銀行交易之前,我的書中沒有這樣做。 人們如何使用像Haskell這樣的語言 - 它不會讓你在STM中做任何IO - 實際上真的會對不僅在易失性存儲器中的數據進行原子變化嗎?

  2. 如何在許多機器上分發它; 你怎么能有分布式事務和橫向擴展應用程序(STM中沒有IO)?

STM用於線程同步和通信, 而不是用於持久存儲數據。 換句話說,STM旨在讓線程在它們之間共享數據而不會出現死鎖或競爭條件。 或者讓線程相互發送信號。 或者基本上是協調線程活動。

如果要將持久數據存儲在磁盤上,請使用數據庫。 MySQL,PostgreSQL,Oracle等等。有一百萬可供選擇。 這不是STM旨在解決的問題。

對於分布式處理......我們仍在努力。 我並沒有密切關注這些事情,以評論這與現實的接近程度。

人們如何使用像Haskell這樣的語言 - 它不會讓你在STM中做任何IO - 實際上真的會對不僅在易失性存儲器中的數據進行原子變化嗎?

通過IO中的庫或類似的效果類型。 例如ACID或“MACID”系統。

如何在許多機器上分發它; 你怎么能有分布式事務和橫向擴展應用程序(STM中沒有IO)?

我不知道Haskell的分布式STM實現,但是Cloud Haskell是GHC的分布式編程模型。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM