Tôi đã đọc bài viết Beautiful Concurrency về Haskell và STM.Haskell đồng thời và kiên trì
Ví dụ được đưa ra là chuyển khoản ngân hàng.
Chuyển khoản ngân hàng của nó - giữa hai số nằm trong bộ nhớ heap.
Những câu hỏi này ngay lập tức đặt ra trong đầu tôi là:
cách chuyển mà nguyên tử lượt truy cập đĩa. Cho đến khi một giao dịch ngân hàng được ghi lại một cách liên tục - ACID - cách thức, nó đã không xảy ra trong cuốn sách của tôi. Làm cách nào để mọi người sử dụng các ngôn ngữ như Haskell - điều này sẽ không cho phép bạn thực hiện bất kỳ IO nào bên trong STM - thực sự thực sự làm thay đổi nguyên tử trong dữ liệu không chỉ trong bộ nhớ dễ bay hơi?
cách phân phối trên nhiều máy; làm thế nào bạn có thể có các giao dịch phân tán và một ứng dụng mở rộng quy mô (không có IO bên trong STM)?
Như câu trả lời ngụ ý tôi nghĩ rằng ví dụ ngân hàng được cho là được hiểu như một phép ẩn dụ – jberryman
@ jberryman vì vậy nó có ích gì cho lúc đó? Điều gì sẽ là một vấn đề đại diện hơn? Dưới đây, chúng tôi có hai câu trả lời và ý kiến của một bài nói về stm-io-hooks đề xuất 1) stm có thể làm việc với io và 2) điều này không được biết đến nhiều trong cộng đồng haskell, hoặc 3) một lỗ hổng trong đó đã không được tiếp xúc ở đây được nêu ra ... – Will
STM là hữu ích khi bạn có concurrency và thực hiện những gì bạn muốn với ổ khóa là không tầm thường. Tôi nghĩ bạn có thể nhận được một số câu trả lời thực sự thú vị nếu câu hỏi của bạn tập trung hơn. – jberryman