Вопрос

Я пытаюсь найти различия между тем, что Clojure называет STM, и тем, что реализовано в Haskell как STM. Отстаивая фактические семантические разногласия, я немного смущен, как говорит Рич Хикки в своей речи, что реализация Clojure о STM сильно отличается от чего -либо еще, но я не понимаю различий, помимо выбора языка.

Это было полезно?

Решение

Clojure STM имеет 3 больших уникальных функции:

  1. Реализует снимки MVCC, избегая транзакций, перезагружает недействительную проверку.
  2. Обеспечивает ссылки на чтение-WRITE, обеспечивает своего рода ручной контроль над заказом о приобретении ресурсов.
  3. Имеет явные поездки, которые уменьшают переписывающие писатели.

Другие советы

Для 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)

Марк Волкманн сделал очень подробную презентацию на STM в целом (и в частности, STM Clojure) в Strange Loop 2009, которую вы можете найти здесь (Статья и слайды здесь) Я действительно не знаю ни одного другого ресурса (кроме кода) для понимания того, как работает STM Clojure.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top