Чем Clojure STM отличается от Haskell STM?
-
14-10-2019 - |
Вопрос
Я пытаюсь найти различия между тем, что Clojure называет STM, и тем, что реализовано в Haskell как STM. Отстаивая фактические семантические разногласия, я немного смущен, как говорит Рич Хикки в своей речи, что реализация Clojure о STM сильно отличается от чего -либо еще, но я не понимаю различий, помимо выбора языка.
Решение
Clojure STM имеет 3 больших уникальных функции:
- Реализует снимки MVCC, избегая транзакций, перезагружает недействительную проверку.
- Обеспечивает ссылки на чтение-WRITE, обеспечивает своего рода ручной контроль над заказом о приобретении ресурсов.
- Имеет явные поездки, которые уменьшают переписывающие писатели.
Другие советы
Для Haskell STM см. Документы SPJ: http://research.microsoft.com/en-us/um/people/simonpj/papers/stm/
Особое использование - «композиционные транзакции памяти» и «транзакционная память с инвариантами данных». Реализация GHC STM действительно не MVCC. Я не помню все детали реализации, но я понимаю, что описание в статьях не так отличается от того, что в настоящее время существует в GHC.
(Обратите внимание, что MVCC, в Clojure или в другом месте, делает возможным писать наказку-см., Например, здесь: http://en.wikipedia.org/wiki/snapshot_isolation)